我有一些模型,我希望有一个“一对一或一个”关联。 我搜索并尝试使用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() 但据我所知,没有改变!!
请问有人帮我摆脱这些重复的外键吗?
答案 0 :(得分:3)
我相信你想要这样的东西:
modelBuilder.Entity<Bill>()
.HasOptional(x => x.DomainRegOrder)
.WithOptionalDependent(c => c.Bill).Map(p => p.MapKey("DomainRegOrderID");