实体框架映射到表

时间:2016-07-15 11:50:03

标签: entity-framework-6

我正在尝试使用以下方法定义到另一个表的映射:

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

由于某种原因不起作用。

1 个答案:

答案 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。

我仍然希望有其他解决方案。

相关问题