Diagram Database importer 를 이용하면 Database 의 전체 Hirearchy를 import 하는 것이 가능하며, Database Entity 관계 다이어그램을 쉽게 생성할 수 있다.

 

Nevron Diagram 은 Table 형태의 데이터 Source 로부터 트리형태와 그래프 데이터 구조로 자동으로 가져오기 기능을 제공한다. 

Data import 기능은 DataTable, DataView, OleDbDataAdapter, SqlDataAdapter, OdbcDataAdapter, OleDbCommand, SqlCommand, OdbcCommand 등, 각 data Source 별로 지원한다.

data 가져오기 기능은 저장된 데이터 정보를 제어할 수 있도록 도와준다.

 

다음 예제는 NGraphDatasourceImporter 를 사용하는 방법을 보여주는데, 단순 Access 데이터베이스에서 데이터를 import 하여 자동으로 Graph 데이터구조로 자동 배열한다.

 

pages 테이블의 컬럼내용

 

Link 테이블의 컬럼 내용

 

자동으로 생성된 Diagram

 

C#

using Nevron.GraphicsCore;
using Nevron.Diagram;
using Nevron.Diagram.Shapes;
using Nevron.Diagram.WinForm;
using Nevron.Diagram.Layout;
using Nevron.Diagram.DataImport;
private void Form1_Load(object sender, System.EventArgs e)
{
    // View 초기화 시작 
    DrawingView.BeginInit();
  
    // View 에서 document 표시
    DrawingView.Document = DrawingDocument;
  
    // view 설정 
    DrawingView.ViewLayout = ViewLayout.Fit;
    DrawingView.Grid.Visible = false;
    DrawingView.GlobalVisibility.ShowPorts = false;
    DrawingView.HorizontalRuler.Visible = false;
    DrawingView.VerticalRuler.Visible = false;
      
    // stylesheets 생성 - one for the vertices and one for the edges
    NStyleSheet vertexStyleSheet = new NStyleSheet();
    vertexStyleSheet.Name = "Vertices";
    DrawingDocument.StyleSheets.AddChild(vertexStyleSheet);
  
    NStyleSheet edgeStyleSheet = new NStyleSheet();
    edgeStyleSheet.Name = "Edges";
    edgeStyleSheet.Style.StartArrowheadStyle = new NArrowheadStyle(ArrowheadShape.Circle, "", new NSizeL(5, 5), new NColorFillStyle(Color.Gray), new NStrokeStyle(1, Color.Black));
    edgeStyleSheet.Style.EndArrowheadStyle = new NArrowheadStyle(ArrowheadShape.Arrow, "", new NSizeL(5, 5), new NColorFillStyle(Color.Gray), new NStrokeStyle(1, Color.Black));
    DrawingDocument.StyleSheets.AddChild(edgeStyleSheet);
  
    // graph data source importer 설정 
    NGraphDataSourceImporter GraphImporter = new NGraphDataSourceImporter();
  
    // set the document in the active layer of which the shapes will be imported
    GraphImporter.Document = DrawingDocument;
  
    // set the connection string, data sources and DataAdapters
    // in this example we have created two OleDbDataAdapters: 
    // the PagesDataAdapter selects all records and columns from the Pages table of the SiteMap.mdb
    // the LinksDataAdapter selects all records and columns from the Links table of the SiteMap.mdb
    string connString = @"Data Source=""" + Application.StartupPath +
@"\SiteMap.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";";
    OleDbDataAdapter PagesDataAdapter = new OleDbDataAdapter("SELECT * FROM Pages", connString);
    OleDbDataAdapter LinksDataAdapter = new OleDbDataAdapter("SELECT * FROM Links", connString);
  
    GraphImporter.VertexDataSource = PagesDataAdapter;
    GraphImporter.EdgeDataSource = LinksDataAdapter;
  
    // vertex records are uniquely identified by their Id (in the Pages table)
    // edges link the vertices with the FromPageId and ToPageId (in the Links table)
    GraphImporter.VertexIdColumnName = "Id";
    GraphImporter.FromVertexIdColumnName = "FromPageId";
    GraphImporter.ToVertexIdColumnName = "ToPageId";
      
    // create vertices as rectangles shapes, with default size (60, 30)
    NBasicShapesFactory shapesFactory = new NBasicShapesFactory();
    shapesFactory.DefaultSize = new NSizeF(60, 30);
    GraphImporter.VertexShapesFactory = shapesFactory;
    GraphImporter.VertexShapesName = BasicShapes.Rectangle.ToString();
  
    // set stylesheets to be applied to imported vertices and edges
    GraphImporter.VertexStyleSheetName = "Vertices";
    GraphImporter.EdgeStyleSheetName = "Edges";
  
    // layered graph layout 사용
    NLayeredGraphLayout layout = new NLayeredGraphLayout();
    layout.Direction = LayoutDirection.TopToBottom;
    layout.LayerAlignment = RelativeAlignment.Near;
    GraphImporter.Layout = layout;
  
    // subscribe for the vertex imported event,
    // which is raised when a shape was created for a data source record
    GraphImporter.VertexImported += new ShapeImportedDelegate(OnVertexImported);
  
    // 가져오기
    GraphImporter.Import();
  
    // view 초기화 끝
    DrawingView.EndInit();
  
}
  
private void OnVertexImported(NDataSourceImporter dataSourceImporter, NShape shape, INDataRecord record)
{
    // display the page title in the shape
    object text = record.GetColumnValue("Title");
    if (text == null)
    {
        shape.Text = "Title not specified";
    }
    else
    {
        shape.Text = text.ToString();
    }
  
    shape.SizeToText(new NMarginsF(10));
      
}

 

VB.NET

 

Imports Nevron.GraphicsCore
Imports Nevron.Diagram
Imports Nevron.Diagram.Shapes
Imports Nevron.Diagram.WinForm
Imports Nevron.Diagram.Layout
Imports Nevron.Diagram.DataImport
...
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' begin view init 
    DrawingView.BeginInit()
  
    ' display the document in the view 
    DrawingView.Document = DrawingDocument
  
    ' configure the view 
    DrawingView.ViewLayout = ViewLayout.Fit
    DrawingView.Grid.Visible = False
    DrawingView.GlobalVisibility.ShowPorts = False
    DrawingView.HorizontalRuler.Visible = False
    DrawingView.VerticalRuler.Visible = False
  
    ' create two stylesheets - one for the vertices and one for the edges 
    Dim vertexStyleSheet As New NStyleSheet()
    vertexStyleSheet.Name = "Vertices"
    DrawingDocument.StyleSheets.AddChild(vertexStyleSheet)
  
    Dim edgeStyleSheet As New NStyleSheet()
    edgeStyleSheet.Name = "Edges"
    edgeStyleSheet.Style.StartArrowheadStyle = New NArrowheadStyle(ArrowheadShape.Circle, "", New NSizeL(5, 5), New NColorFillStyle(Color.Gray), New NStrokeStyle(1, Color.Black))
    edgeStyleSheet.Style.EndArrowheadStyle = New NArrowheadStyle(ArrowheadShape.Arrow, "", New NSizeL(5, 5), New NColorFillStyle(Color.Gray), New NStrokeStyle(1, Color.Black))
    DrawingDocument.StyleSheets.AddChild(edgeStyleSheet)
  
    ' configure the graph data source importer 
    Dim GraphImporter As New NGraphDataSourceImporter()
  
    ' set the document in the active layer of which the shapes will be imported 
    GraphImporter.Document = DrawingDocument
  
    ' set the connection string, data sources and DataAdapters 
    ' in this example we have created two OleDbDataAdapters:  
    ' the PagesDataAdapter selects all records and columns from the Pages table of the SiteMap.mdb 
    ' the LinksDataAdapter selects all records and columns from the Links table of the SiteMap.mdb 
    Dim connString As String = "Data Source=""" + Application.StartupPath + "\SiteMap.mdb"";Provider=""Microsoft.Jet.OLEDB.4.0"";"
    Dim PagesDataAdapter As New OleDbDataAdapter("SELECT * FROM Pages", connString)
    Dim LinksDataAdapter As New OleDbDataAdapter("SELECT * FROM Links", connString)
  
    GraphImporter.VertexDataSource = PagesDataAdapter
    GraphImporter.EdgeDataSource = LinksDataAdapter
  
    ' vertex records are uniquely identified by their Id (in the Pages table) 
    ' edges link the vertices with the FromPageId and ToPageId (in the Links table) 
    GraphImporter.VertexIdColumnName = "Id"
    GraphImporter.FromVertexIdColumnName = "FromPageId"
    GraphImporter.ToVertexIdColumnName = "ToPageId"
  
    ' create vertices as rectangles shapes, with default size (60, 30) 
    Dim shapesFactory As New NBasicShapesFactory()
    shapesFactory.DefaultSize = New NSizeF(60, 30)
    GraphImporter.VertexShapesFactory = shapesFactory
    GraphImporter.VertexShapesName = BasicShapes.Rectangle.ToString()
  
    ' set stylesheets to be applied to imported vertices and edges 
    GraphImporter.VertexStyleSheetName = "Vertices"
    GraphImporter.EdgeStyleSheetName = "Edges"
  
    ' use layered graph layout 
    Dim layout As New NLayeredGraphLayout()
    layout.Direction = LayoutDirection.TopToBottom
    layout.LayerAlignment = RelativeAlignment.Near
    GraphImporter.Layout = layout
  
    ' subscribe for the vertex imported event, 
    ' which is raised when a shape was created for a data source record 
    AddHandler GraphImporter.VertexImported, AddressOf OnVertexImported
  
    ' import 
    GraphImporter.Import()
  
    ' end view init 
    DrawingView.EndInit()
  
End Sub
  
Private Sub OnVertexImported(ByVal dataSourceImporter As NDataSourceImporter, ByVal shape As NShape, ByVal record As INDataRecord)
    ' display the page title in the shape 
    Dim text As Object = record.GetColumnValue("Title")
    If text Is Nothing Then
        shape.Text = "Title not specified"
    Else
        shape.Text = text.ToString()
    End If
  
    shape.SizeToText(New NMarginsF(10))
  
End Sub
  
Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs)
  
End Sub

 

 

위 내용은 아래 페이지를 옮겼습니다.

How to automatically create a diagram from a database?

 

 

행복한 고수되십시요.

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

반응형

'ETC > Nevron' 카테고리의 다른 글

[ETC-Nevron] 다이어그램 Shape 를 삭제할 때 확인을 요청  (0) 2017.04.05

+ Recent posts