2016-07-15 2 views
0

私は、以下の方法を使用して、別のテーブルへのマッピングを定義しようとしています:Entity Frameworkのマッピング

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Ansprechpartner>().Map(x => x.ToTable("Ansprechpartnerdaten")); 

私は2つのDbContexts作成:変更すべきではないエンティティを含む一つのデフォルトのコンテキスト(プライベートセッター)を

と編集時に使用されるべき別のEditContext。

EditContextTest.TestMethod1-Testmethode帽子アイネAusnahmeのausgelöst: のSystem.InvalidOperationException:Entitätstypen 'Ansprechpartner' ウント 'AnsprechpartnerEdit' könnenが死ぬダイ -

は、私は(ドイツ語で申し訳ありません)、次のエラーメッセージが表示されますTabelle 'Ansprechpartner' NICHT gemeinsamのverwenden、derselben Typhierarchie befindenウントNICHTユーバーアイネのgültige1におけるワイルSIEのSICHのNICHT:1-FremdschlüsselbeziehungMIT übereinstimmendenPrimärschlüsselnverfügen。

エンティティフレームワークがAnsprechpartnerとAnsprechpartnerEditをAnsprechpartnerテーブルにマップしようとしているというエラーメッセージが表示されます。

だから私は、マップしようとしています:

何らかの理由で動作しません
Model    | Table 
--------------------+--------------------- 
Ansprechpartner  | Ansprechpartnerdaten 
AnsprechpartnerEdit | Ansprechpartner 

答えて

0

だから、一つの選択肢は、別の名前にModelクラスAnsprechpartnerの名前を変更することです。 私はをテストしました。私はクラスの名前を変更したくない、私はより良い/別の名前を思いつくことはできません。物事を命名することは、CSの難しい問題の1つです。

別の解決策は、マッピング内のすべてのAnsprechpartner関連のものを無視することです:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Ignore<Ansprechpartner>(); 
    modelBuilder.Ignore<AktivitätenAnsprechpartner>(); 
    modelBuilder.Ignore<AnsprechpartnerInteressen>(); 
    modelBuilder.Ignore<VerkaufschancenAnsprechpartner>(); 
    modelBuilder.Ignore<LeadsAnsprechpartner>(); 

私は今のためにそれをやっています。今はこのクラスは必要ありませんし、とにかくそれらのためのEditModelを実装する予定です。

私はまだ他のソリューションがあります願っています。

関連する問題