3

我有一些模型,我想有一个“一对零或一”的关联。我搜索并尝试使用 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() 但据我所知没有进行任何更改!

有人可以帮我摆脱这些重复的外键吗?

4

1 回答 1

3

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

modelBuilder.Entity<Bill>() 
  .HasOptional(x => x.DomainRegOrder) 
  .WithOptionalDependent(c => c.Bill).Map(p => p.MapKey("DomainRegOrderID"); 
于 2012-05-27T17:08:02.640 回答