0

コードを使用して再生成する必要がありEntity Modelます。私は行きたくありませんし、right click and update model from database毎回変化があります。

だから私はEdmGenEdmGen2を見始めました

EdmGen2私は自分のために自分を事前生成するために使用しModel Viewsます:

using (System.Diagnostics.Process process = new System.Diagnostics.Process())
{
    process.StartInfo.FileName = @"C:\EdmGen2.exe";
    process.StartInfo.Arguments = @"/ViewGen cs ""C:\Project\EntityFramework\Model\ApplicationEntityModel.edmx""";
    process.StartInfo.WorkingDirectory = @"C:\Project\EntityFramework\Model";
    process.Start();
    process.WaitForExit();
}

これは完全に機能します。

いいえ、私は私のを再生成しようとしていEntity Modelます:

using (System.Diagnostics.Process process = new System.Diagnostics.Process())
{
    process.StartInfo.FileName = @"C:\EdmGen2.exe";
    process.StartInfo.Arguments = String.Format(@"/ModelGen ""{0}"" ""System.Data.SqlClient"" ""ApplicationEntityModel""", ConnectionString);
    process.StartInfo.WorkingDirectory = @"C:\Project\EntityFramework\Model";
    process.Start();
    process.WaitForExit();
}

.edmxこれはファイルを生成するだけです。名前空間を指定できないため、これはうまくいきません。

.edmx designer.csを完全に再生成するために使用できるものはありますtoolか?templateEntity Model', this includes theand

4

2 に答える 2

2

EntityStoreSchemaGenerator のソース コードを入手し、コーディングすることができました。

これらのフィルターなどを追加して、必要なテーブルを制限できます。また、エンティティ コレクションの最後に「S」を追加/削除するタイミングを把握するための、この狂った複数形化機能もあります。Status で終わる単語の場合は失敗していましたが、単数形は Status でしたが (私はいつもそれを笑いました)、Status の複数形は Statuses であると言うことができました (公式には正しくありませんが)。 ) であり、Statuses の単数形は Status です。

コードはこちら: http://social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/thread/30b10ed3-b705-458d-ae1f-19d595bceb39/

すべてのファイルを edmx にマージするクラスのコードを見つけました。 http://fusioncrm.googlecode.com/svn-history/r5/trunk/Fusion.Data.Generation/ModelGenerator.cs

私は、「ゴールド」データベースに基づいてクライアントに対してこれらすべてを実行する consoleapp を作成しました。これをデザイナーから実行するのも嫌いでした。これは、何らかの理由で常にわずかに異なるためです。この方法では常に同じファイルが生成されるように見えるため、バージョン管理へのチェックイン時に何が変更されたかがより明確になります。

于 2012-08-24T13:18:36.637 に答える
1

クラスの自動生成は、Visual Studio 内で実行する必要がある Visual Studio のカスタム ツールによって処理されるため、Visual Studio を直接操作する必要があります (バックグラウンドで実行し、いくつかのアクションを実行するようにコマンドを実行します)。

また、この自動生成は、EDMX を機能させるために手動で修正する必要がある変更がある可能性があるため、非常に問題があります。それらは、依存コードがビルドされない方法で生成されたクラスを変更する変更である場合もあります。

于 2012-08-24T08:00:29.030 に答える