Visio&;C#编程
我有一个Visio ER图表,希望从实体中读取数据库属性(列、主键、外键、数据类型)信息。还希望找到关联的父表和子表。如何使用C#以编程方式实现它 我正在使用Interop Visio库,可以从ER图中读取页面和形状,但不知道Visio Interop中的哪些函数或方法可以让我从形状中获取属性信息 下面是我正在使用的代码,我没有得到任何属性使用它。我的ER图只有两个实体:父表和子表Visio&;C#编程,c#,.net,visio,C#,.net,Visio,我有一个Visio ER图表,希望从实体中读取数据库属性(列、主键、外键、数据类型)信息。还希望找到关联的父表和子表。如何使用C#以编程方式实现它 我正在使用Interop Visio库,可以从ER图中读取页面和形状,但不知道Visio Interop中的哪些函数或方法可以让我从形状中获取属性信息 下面是我正在使用的代码,我没有得到任何属性使用它。我的ER图只有两个实体:父表和子表 using System; using System.Collections.Generic; using Sys
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Office.Interop.Visio;
namespace Visio_POC
{
public partial class Load_Visio : Form
{
static string strProperties = "";
public Load_Visio()
{
InitializeComponent();
string strFileName = "\\Visio_POC\\POC_Visio.vsd";
Microsoft.Office.Interop.Visio.Application vsApp = new Microsoft.Office.Interop.Visio.Application();
Microsoft.Office.Interop.Visio.Document docVisio = vsApp.Documents.Add(strFileName);
Page pgVisio = docVisio.Pages[1];
Shapes shpVisio = pgVisio.Shapes;
int intCnt = shpVisio.Count;
string[] strShapeText = new string[intCnt];
printProperties(pgVisio.Shapes);
txtProperties.Text = strProperties;
}
public static void printProperties(Shapes shapes)
{
// Look at each shape in the collection.
foreach (Shape shape in shapes)
{
// Use this index to look at each row in the properties
// section.
short iRow = (short) VisRowIndices.visRowFirst;
// While there are stil rows to look at.
while (shape.get_CellsSRCExists(
(short) VisSectionIndices.visSectionProp,
iRow,
(short) VisCellIndices.visCustPropsValue,
(short) 0) != 0)
{
// Get the label and value of the current property.
string label = shape.get_CellsSRC(
(short) VisSectionIndices.visSectionProp,
iRow,
(short) VisCellIndices.visCustPropsLabel
).get_ResultStr(VisUnitCodes.visNoCast);
string value = shape.get_CellsSRC(
(short) VisSectionIndices.visSectionProp,
iRow,
(short) VisCellIndices.visCustPropsValue
).get_ResultStr(VisUnitCodes.visNoCast);
// Print the results.
//Console.WriteLine(string.Format(
// "Shape={0} Label={1} Value={2}",
// shape.Name, label, value));
strProperties = strProperties + shape.Name + " - " + label + " - " + value;
// Move to the next row in the properties section.
iRow++;
}
// Now look at child shapes in the collection.
if (shape.Master == null && shape.Shapes.Count > 0)
printProperties(shape.Shapes);
}
}
}
}
数据库逆向工程是一个封闭的解决方案。Terry Halpin的一本书《数据库建模》涵盖了这一点。或者,你可以阅读我的文章在一个想法,你可以做自己的想法