gpt4 book ai didi

c# - Entity Framework ,代码优先 : How can i make a Foreign Key Not-Nullable

转载 作者:行者123 更新时间:2023-12-04 13:49:26 26 4
gpt4 key购买 nike

到目前为止,我发现使用 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-to-* 关系(我想要什么)。但是 Addresses 中的 FK PersonId 可以为 null,并且我无法在 Fluent API 中访问此 FK,因为没有属性。如何将此 FK 更改为不可为空?

此外,当我想删除一个人时,EF 不允许我这样做,因为有一个关联的地址。我认为行为是:

  • 可空外键:删除有问题的记录,设置子记录外键为空
  • not-nullable:错误,或删除记录连同所有相关记录(取决于级联规则)

这不对吗?

最佳答案

下面的 Fluent API 指令为我做了,所以要实现

  • 一对*关系
  • FK 不可为空
  • FK 未定义为实体类中的属性
  • 级联删除(删除父项会删除所有相关记录,此处为地址)

必须在 OnModelCreating 中包含以下语句

modelBuilder.Entity<Person>().HasMany(a => a.Addresses).WithRequired().WillCascadeOnDelete(true);

关于c# - Entity Framework ,代码优先 : How can i make a Foreign Key Not-Nullable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25592775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com