我正在尝试使用以下方法定义到另一个表的映射:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Ansprechpartner>().Map(x => x.ToTable("Ansprechpartnerdaten"));
我创建了两个DbContexts:一个包含不应修改的实体的默认上下文(私有设置器)
和编辑时应该使用的另一个EditContext。
我收到以下错误消息(抱歉 - 用德语):
EditContextTest.TestMethod1-Testmethode hat eineAusnahmeausgelöst: System.InvalidOperationException:DieEntitätstypen'Ansprechpartner' und'AnsprechpartnerEdit'könnendieTabelle'Ansprechpartner'nicht gemeinsam verwenden,weil sie sich nicht in derselben Typhierarchie befinden undnichtüberinegültige1:1-Fremdschlüsselbeziehungmit übereinstimmendenPrimärschlüsselnverfügen。
错误消息表明Entity Framework正在尝试将Ansprechpartner和AnsprechpartnerEdit映射到表Ansprechpartner。
所以我想映射:
Model | Table
--------------------+---------------------
Ansprechpartner | Ansprechpartnerdaten
AnsprechpartnerEdit | Ansprechpartner
由于某种原因不起作用。
答案 0 :(得分:0)
因此,一个选项是将Model类Ansprechpartner
重命名为另一个名称。
我测试了AnsprechpartnerXX
。我不想重命名这个类,我无法想出一个更好/不同的名字。你知道命名是CS中的难题之一。
另一个解决方案是忽略映射中所有与Ansprechpartner相关的事情:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Ignore<Ansprechpartner>();
modelBuilder.Ignore<AktivitätenAnsprechpartner>();
modelBuilder.Ignore<AnsprechpartnerInteressen>();
modelBuilder.Ignore<VerkaufschancenAnsprechpartner>();
modelBuilder.Ignore<LeadsAnsprechpartner>();
我现在正在这样做。我现在不需要这个类,我计划为它们实现一个EditModel。
我仍然希望有其他解决方案。