3

Sql Server Data Tools に対してコード生成ツールを作成していますが、次のデータ型を取得できる必要があります。

  1. 列を表示
  2. テーブルの計算列

この情報はどこにありますか? テーブル (計算列を除く) の場合は、次の場所にあります。

TSqlObject table;  //retrieved elsewhere
TSqlObject column = table.GetReferenced(Table.Columns).First(); //first column
TSqlObject dataType = column.GetReferenced(Column.DataType).FirstOrDefault();

計算列の場合、dataType上記は null です。

ビューについては、次のことを試しました。

TSqlObject view;  //retrieved elsewhere
TSqlObject column = view.GetReferenced(View.Columns).First(); //first column
TSqlObject dataType = column.GetReferenced(Column.DataType).FirstOrDefault();//null

この情報はどこにありますか?ソース .DACPAC をデータベースに公開する以外に、この情報を取得するためのオプションはありますか?


EDIT:以下のEd Elliotへの対応(強く型付けされたDacFxモデルの使用に関して)

次のコードは、ビューの型情報を戻すことができません:

TSqlTypedModel model = new TSqlTypedModel(@"path.dacpac");
var view = model.GetObjects<TSqlView>(Microsoft.SqlServer.Dac.Model.DacQueryScopes.UserDefined).FirstOrDefault();
var viewcolumns = view.Columns;

//false
bool viewHasTypeInformation = viewcolumns.Any(c => c.DataType.Count() > 0); 

var table = model.GetObjects<TSqlTable>(Microsoft.SqlServer.Dac.Model.DacQueryScopes.UserDefined).FirstOrDefault();
var tablecolumns = table.Columns;

//true
bool tableHasTypeInformation = tablecolumns.Any(c => c.DataType.Count() > 0);

これは DAC モデル自体の制限であると考え始めています。

4

1 に答える 1