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