如何在EF6中为自定义实体创建映射规则?

时间:2016-07-25 08:25:02

标签: entity-framework entity-framework-6

我是Entity framework的新手。我有机会使用代码优先方法工作EF6。当通过谷歌中的一些概念为自定义列创建映射规则时,我找到了一种方法OnModelCreating() 除此之外是否还有其他方法,以便我们可以从代码优先方法在db中创建表。 如果有方法......哪种方式更好?

1 个答案:

答案 0 :(得分:1)

是的,还有其他方法可以映射您的类,并且更好选项。至少,我是这样的。您可以为继承通用EntityTypeConfiguration的模型创建映射器,并添加此映射器 OnModelCreating 。这样,如果您拥有大量模型,您的代码将保持清洁并且更容易管理映射。

模特课:

public class Person
{
    public int Id { get; set; }
    public string FullName { get; set; }
    public int Age { get; set; }
}

Mapper类:

internal class PersonMap
    : EntityTypeConfiguration<Person>
{
    public PersonMap()
    {
        // Primary key
        this.HasKey(m => m.Id);

        // Properties
        this.Property(m => m.FullName)
            .HasMaxLength(50);      

        // Table & column mappings
        this.ToTable("TABLE_NAME", "SCHEMA_NAME")
        this.Property(m => m.Id).HasColumnName("ID");
        this.Property(m => m.FullName).HasColumnName("FULL_NAME");
        this.Property(m => m.Age).HasColumnName("AGE");

        // Relationship mappings
        // Map your naviagion properties here if you have any.
    }
}

然后在 OnModelCreating 方法中添加mapper:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Configurations.Add(new PersonMap());

    base.OnModelCreating(modelBuilder);
}