4

サーバーエクスプローラーを使用せずに、Visual Studioでこれを行う簡単な方法はありますか?

マクロも見てみましたが、記録はプロデュースのみ

  Sub TemporaryMacro()
  End Sub

だから運がない。

これをスクリプト化する方法はありますか?

4

3 に答える 3

3

これに似たバッチスクリプトを使用して、基になるテーブル/ビューが変更されたときのモデルの更新を管理しています。それを使用するには:

  1. SQLMetalとSQLMetalInclude(ソースからダウンロードしてビルドする必要がある場合があります)を現在のディレクトリ(またはパス内)からアクセスできるようにします
  2. 各行にテーブル/ビュー名を含むファイル「chosenEntities.txt」を作成します。これらのテーブルは、コードが生成される唯一のテーブルになります。
  3. Generate.batバッチコードを変更、保存、実行します
  4. (オプション)ここで説明するように、.batファイルを外部実行ツールとしてVisualStudioに追加します

Generate.bat:

sqlmetal /conn:"Data Source={Hostname};Initial Catalog={DBName};User ID={Username};Password={Password}" /dbml:temp.dbml /views

setlocal EnableDelayedExpansion
set file=chosenEntities.txt
set include=
FOR /F %%i IN (%file%) DO (
set include=!include!%%i,
)
set include=%include:~0,-1%

sqlmetalinclude -dbml:temp.dbml -output:ChosenEntities.dbml -include:%include%

sqlmetal /context:CustomDataContext /pluralize /namespace:MyNamespace.DB /language:csharp /code:DBEntities.cs /entitybase:DBEntityBase ChosenEntities.dbml

selectedEntities.txtの例:

Accounts
Customers
PRODUCTS_VIEW
AnotherTable

説明:

  1. 中間の.dbmlファイルは、通常どおりsqlmetalによって生成されます。作成されたdbmlファイルには、データベース内のすべてのテーブル(および選択されている場合はビュー)の定義が含まれています。
  2. 次のコードブロックはchosenEntities.txtをループし、各行に行の内容(テーブル名)とコンマ'、'を追加します。
  3. 最後の末尾のコンマが削除されます
  4. sqlmetalincludeを実行します。これにより、基本的に元のtemp.dbmlファイルのコピーが作成されますが、指定したテーブルのみが含まれます。個々のテーブル名の変換など、利用可能な他のオプションがあります
  5. sqlmetalが2回実行され、今回はカットダウンされた.dbmlファイルに基づいて実際の.csコードが生成されます。
于 2013-03-18T11:35:59.360 に答える
2

データベースから既存のDBMLファイルを更新するのに役立つ優れたユーティリティが1つあります。それは、 Huagati DBML/EDMXツールです。

これは無料ではありませんが、LinqからSQLへの本格的な開発に投資する価値があります。

唯一の代替策は、自分で作成することです。データベース構造を読み取り、それをDBMLのXML表現と比較し、必要に応じてDBMLを更新します。

于 2010-07-18T15:52:18.593 に答える
2

SqlMetalIncludeは私にとって魅力のように機能しました。まず、SqlMetaを使用して完全なdbmlファイルを作成します-testComplete.dbmlと言います

次に、このファイルをSqlMetaIncludeへの入力として提供します。SqlMetalInclude/ dbml: "testComplete.dbml" /output:"testSubSet.dbml "/include:dbo.SampleTable1=SampleTable1,dbo.SampleTable2=SampleTable2

このツールには、完全なプロセスを処理できるGUIが含まれていることに注意してください。

于 2010-11-27T15:36:02.007 に答える