到目前为止,我发现使用Fluent API更改数据库模型的所有可能性都假定我要编辑的属性也存在于实体中作为一个属性。但我不知道如何更改不是实体类中属性的属性的属性。
例如:
public class Person
{
public int PersonId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Address> Addresses { get; set; }
public Person()
{
this.Addresses = new List<Address>();
}
}
public class Address
{
public int AddressId { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
现在 Code First 创建了一个数据库,其中 Addresses 表具有 PersonId 作为 FK,因此存在一对多关系(这是我想要的)。但是 Addresses 中的 FK PersonId 是可空的,并且由于没有属性,我无法在 Fluent API 中访问此 FK。如何将此 FK 更改为非空?
此外,目前当我想删除一个人时,EF 不允许我这样做,因为有相关地址。我认为行为应该是:
- 可空 FK:删除相关记录,将子记录 FK 设置为空 - 不可空:错误或一起删除所有相关记录(取决于级联规则)
这不正确吗?