我正在使用一个现有的数据库,很遗憾我无法更改,并且似乎在创建关系时遇到了麻烦。我对 EF 比较陌生,经过一些搜索发现用户试图实现类似的目标,但是给出的建议在这种情况下似乎不起作用。
我有以下课程:
public partial class Order
{
public int Id { get; set; }
public int BillingAddressId { get; set; }
public int ShippingAddressId { get; set; }
//more values
public virtual Address ShippingAddress { get; set; }
public virtual Address BillingAddress { get; set; }
}
public partial class Address
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
//more values
}
我希望能够通过订单中的导航属性访问运输/账单地址。ShippingAddressId
/BillingAddressId
字段都与Id
Address 类有关,但遗憾的是没有在数据库中设置为外键。
我相信我正在努力实现的关系是多对一的。即一个订单有一个收货地址(Address),但一个地址可以是多个订单的收货地址。
我尝试了以下多种变体:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>().HasOptional(o => o.ShippingAddress)
.WithMany()
.HasForeignKey(o => o.ShippingAddressId);
}
但是每次我尝试访问 Order.ShippingAddress.FirstName 时,都会收到一个空引用异常。
我想要实现的目标是可能的吗?