实体框架:Fluent API将重复的外键设置为0或0

时间:2012-05-27 14:31:52

标签: c# entity fluent

我有一些模型,我希望有一个“一对一或一个”关联。 我搜索并尝试使用Fluent API进行关联。  这是我的课程:

public partial class Bill
{

[Key]
public int Id { get; set; }
[Required]
public double Amount { get; set; }

public virtual DomainRegOrder DomainRegOrder { get; set; }

}

public partial class DomainRegOrder
{
[Key]
public int Id { get; set; }
[Required]
public string DomainName { get; set; }

public virtual Bill Bill { get; set; }
}

并在我的DataContext类中:

public class DataContext : DbContext {

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

 modelBuilder.Entity<DomainRegOrder>()
 .HasOptional(x => x.Bill)
 .WithOptionalDependent();

 }

但是当我初始化数据库时,在 Bills 表中,我将有两个 名为“ DomainRegOrder_Id ”和“ DomainRegOrder_Id1 ”的列。

我尝试在 Bill 实体中添加 DomainRegOrderId ,如下所示:

public int? DomainRegOrderId { get; set; }

但“Bills”表格中会有“ DomainRegOrderId ”和“ DomainRegOrder_Id ”。

我还将 .WithOptionalDependent()更改为 .WithOptionalPrincipal() 但据我所知,没有改变!!

请问有人帮我摆脱这些重复的外键吗?

1 个答案:

答案 0 :(得分:3)

我相信你想要这样的东西:

modelBuilder.Entity<Bill>() 
  .HasOptional(x => x.DomainRegOrder) 
  .WithOptionalDependent(c => c.Bill).Map(p => p.MapKey("DomainRegOrderID");