【问题标题】:One to many mapping in Entity framework with fluent api使用流利的 api 在实体框架中进行一对多映射
【发布时间】:2014-05-25 07:59:39
【问题描述】:

我找到了很多这方面的例子,但没有一个适合我......

我有主课:

public class Class1
{
    public int id { get; set; }
    public string desc { get; set; } 
    public virtual Class2 class2 {get; set;}
}

第二类:

public class Class2
{
    public int id { get; set; }
    public string desc { get; set; } 
}

我是这样映射Class1

public class Class1Map : EntityTypeConfiguration<Class1>
{
    public Class1Map()
    {
        // Primary Key
        this.HasKey(t => t.Id);

        // Table & Column Mappings
        this.ToTable("Class1TableName");
        this.Property(t => t.id).HasColumnName("IdColumnName");
        this.Property(t => t.desc).HasColumnName("DescColumName");
    }
}

这很好用

但我尝试了多种方法将Class1Class2 属性绑定到Class1TablenameIdClass2ColumnName 字段作为链接到Class2 表的IdColumnName 的外键,但均未成功。

如您所见,我不想将 IdClass2 属性也放入 Class1

为了测试我尝试了但没有成功:

this.HasRequired(t => t.class2)
    .WithRequiredPrincipal()
    .Map(m => m.MapKey("IdClass2ColumnName "));


this.HasRequired(t => t.class2)
    .WithMany()
    .Map(m => m.MapKey("IdClass2ColumnName"));

【问题讨论】:

  • 经过一些工作后,创建了数据库(即使在配置中设置的 AutomaticMigrationsEnabled 属性不起作用......)但在 Class1TableName 中没有找到 IdClass2ColumnName 字段,而是 class2_id 一个
  • 附加信息:表中的每个class2条目都可以在许多class1条目中使用,它是一个简单类型的表

标签: c# entity-framework ef-code-first mapping relationship


【解决方案1】:

已解决,是代码迁移的问题,我忘记更新代码迁移类,所以 EF 使用旧的列名。

正确的映射语法是

this.HasRequired(t => t.class2)
    .WithRequiredDependent()
    .Map(m => m.MapKey("IdClass2ColumnName "));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多