Asp.net mvc Fluent API映射另一方(如果为1-1关系)
我使用code first和Fluent API在两个表之间建立了关系。这是可行的,模式是使用正确的字段和键分配生成的。然而,我的问题是,我需要能够在我的结果模型中说SupplyPoint.SupplyPointPricing。我下面所说的只是给了我另一条路 我想一定有办法保持我现有的结构,但只是映射供应点Asp.net mvc Fluent API映射另一方(如果为1-1关系),asp.net-mvc,Asp.net Mvc,我使用code first和Fluent API在两个表之间建立了关系。这是可行的,模式是使用正确的字段和键分配生成的。然而,我的问题是,我需要能够在我的结果模型中说SupplyPoint.SupplyPointPricing。我下面所说的只是给了我另一条路 我想一定有办法保持我现有的结构,但只是映射供应点 public partial class SupplyPoint { [Key] public int SupplyPointId { get
public partial class SupplyPoint
{
[Key]
public int SupplyPointId { get; set; }
public string SupplyPointName { get; set; }
}
public class SupplyPointPricing
{
public int SupplyPointPricingId { get; set; }
public int? SupplyPointId { get; set; }
[ForeignKey("SupplyPointId")]
public virtual SupplyPoint SupplyPoint { get; set; }
}
然后我使用fluentapi,这使我得到了表和我期望的模式之间的1-1
modelBuilder.Entity<SupplyPointPricing>()
.HasOptional(a => a.SupplyPoint)
.WithMany()
.HasForeignKey(u => u.SupplyPointId);
modelBuilder.Entity()
.has可选(a=>a.SupplyPoint)
.有很多
.HasForeignKey(u=>u.SupplyPointId);
上次我遇到这个问题时,我不得不改变设计,在SupplyPoint表中有一个外键。在前一次比赛中,这是可以的,因为这是一个1-1的要求,总是有一个匹配的记录。这一次我需要保持这种结构,因为SupplyPoint和SupplyPoint定价之间是1-0 这就是我在不使用Fluent映射的情况下始终与模型建立1对1关系的方式:
public partial class SupplyPoint
{
[Key]
public int SupplyPointId { get; set; }
public virtual SupplyPointPricing SupplyPointPricing { get; set; }
}
public class SupplyPointPricing
{
[Key, ForeignKey("SupplyPoint")]
public int SupplyPointId { get; set; }
public virtual SupplyPoint SupplyPoint { get; set; }
}
如您所见,SupplyPointPricing
没有自己的Id,只有SupplyPoint的Id,它在1对1关系中充当键
我唯一不确定的是SupplyPointId
是否可以是一个可为null的int
这不会在SupplyPoint上创建外键,因此如果没有定价,则SupplyPoint.SupplyPointPricing
属性将为空