9

私のデータベースはドイツ語のテーブル名と列名を使用して設計されているため、エンティティ フレームワークのデフォルトの複数形化機能が機能しません。

これについて議論されているリソースをいくつか見つけましたが、どれも機能していないようです。

私が見つけたもの:マッピングを追加できるPluralisationServiceがあります:

PluralizationService pluralizer =
      PluralizationService.CreateService(CultureInfo.GetCultureInfo("en-us"));
ICustomPluralizationMapping mapping = ps as ICustomPluralizationMapping;
mapping.AddWord("Tabelle", "Tabellen");

しかし、次は何ですか?私はしようとしました:

EntityModelSchemaGenerator generator = new EntityModelSchemaGenerator(container);
generator.PluralizationService = pluralizer;
generator.GenerateMetadata();

両方を POCO T4 テンプレートに入れます。しかし、次の例外がスローされました。

EntityContainer 'ContainerName' はストア EntityContainer ではありません。パラメーター名: Microsoft.VisualStudio.TextTemplating...GeneratedTextTransformation.TransformText()
の System.Data.Entity.Design.EntityModelSchemaGenerator.Initialize(...)の storeEntityContainer

4

3 に答える 3

0

私も同じものを探しています。多分これは助けることができます。私はそのような基本的な機能にお金を払うつもりはありません。

編集:

投稿したコードはEdmGen2で使用され、クラスに応じて複数形のCSDL、SSDL、またはMSLファイルが提供されます。

于 2012-10-04T04:18:33.063 に答える
0

EF Code First でテーブル名を完全にカスタマイズするには、Table属性を使用して、クラスに関連付けられたテーブルの名前を明示的に指定します。

[Table("InternalBlogs")]
public class Blog
{
    //...
}
于 2012-10-04T04:22:57.673 に答える
0

非常に古い質問ですが、誰かがまだ可能なワークフロー/解決策を探している場合:

データベースからのスキーマ インポート (CSDL) をカスタマイズしたいという同様の問題がありました。ソリューション/ワークフローは次のとおりです。

  1. データベーススキーマ(Visual Studio Database Project VS 201xを使用)をローカルデータベースにデプロイしました
  2. EDMGEN を使用してデータベース モデルをインポートし、CSDL、SSDL、および MSDL ファイルを作成しました http://msdn.microsoft.com/en-us/library/vstudio/bb387165(v=vs.110).aspx
  3. EDMGEN2 を修正し、カスタム ルールを使用して複数形と命名を処理する方法を変更し、EDMX ファイルを作成しました。
  4. T4 テンプレートを実行して (必要に応じて追加のカスタマイズを行います)、出力を作成します。
于 2014-09-04T06:28:23.333 に答える