到目前为止,我发现使用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,因此具有1对*关系(我想要的是什么)。但地址中的FK PersonId可以为空,因为没有属性,我无法在Fluent API中访问此FK。如何将此FK更改为不可空?
另外,在我想删除一个人的时刻,EF不允许我这样做,因为有一个相关的地址。我认为行为是:
这不正确吗?
答案 0 :(得分:1)
以下Fluent API指令为我做了,所以要实现
以下声明必须包含在OnModelCreating
中modelBuilder.Entity<Person>().HasMany(a => a.Addresses).WithRequired().WillCascadeOnDelete(true);
答案 1 :(得分:0)
首先,你必须使外键可以为空。
第二,您必须使用流畅的API来执行此操作。
尝试将以下内容添加到数据库上下文
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>()
.HasOptional(a => a.Address)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}