【问题标题】:EF ComplexType column name (ModelFirst)EF ComplexType 列名 (ModelFirst)
【发布时间】:2014-03-12 11:18:54
【问题描述】:
我正在开发一个 EF 6 项目 (ModelFirst)。
我在所有表中都使用了一个名为“UserInfo”的复杂类型。
但是,当我从模型创建数据库时,列以复杂类型的名称为前缀(例如:UserInfo_CreationDate)
有没有办法在模型中定义不带前缀的列名(CreationData 代替 UserInfo_CreationDate)?
【问题讨论】:
标签:
entity-framework
complextype
ef-model-first
【解决方案1】:
您可以使用Annotations 或FluentApi。
对于FluentApi,覆盖dbContext 类中的OnModelCreating 方法
并且,对于 UserInfo 类的每个属性,添加一个 HasColumnName 定义,如下所示:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<YourEntity>().Property(s => s.UserInfo.CreationDate).HasColumnName("CreationData");
}
对于Annotations,在UserInfo类的每个属性中,添加如下注解:
public class UserInfo
{
.....
[Column("CreationDate")]
public DateTime CreationDate {get; set;}
.....
}