我使用数据注释来获取外键。 EF成功构建了一些列,但为某些属性添加了额外的列。 这是我的班级:
public class Class
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column(TypeName = "BIGINT")]
public Int64 LiIdH { get; set; }
[Column(TypeName = "BIGINT"), Index(IsUnique = true)]
public Int64 LiIdPeriod { get; set; }
public virtual ZPeriod ZPeriod { get; set; }
[Column(TypeName = "SMALLINT"), Index(IsUnique = true)]
public Int16 SWhCode { get; set; }
public virtual InvtWare InvtWare { get; set; }
}
我希望将LiIdPeriod
和SWhCode
作为外键。 EF将LiIdPeriod
添加为外键,但对于SWhCode
,它只会添加一个名为InvtWare_SWhCode
的额外列。
如何解决此问题并将SwhCode
作为外键?我更喜欢数据注释和属性到流畅的API。
答案 0 :(得分:2)
您可以通过两种不同的方式为实体框架指定外键。
使用数据注释
[Column(TypeName = "SMALLINT"), Index(IsUnique = true)]
public Int16 SWhCode { get; set; }
[ForeignKey("SWhCode")]
public virtual InvtWare InvtWare { get; set; }
使用Fluent API
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Assuming one to many relationship
modelBuilder.Entity<Class>().HasRequired(d =>d.InvtWare).WithMany(d => d.Classes).HasForeignKey(d => d.SwhCode);
}