gpt4 book ai didi

entity-framework - 指定外键 Entity Framework 代码优先,Fluent Api

转载 作者:行者123 更新时间:2023-12-04 07:28:04 25 4
gpt4 key购买 nike

我有一个关于在 EF Code First Fluent API 中定义外键的问题。
我有一个这样的场景:

人和车两类。在我的场景中, Car 可以分配 Person 或不分配(一个或零关系)。
代码:

    public class Person
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

public class Car
{
public int Id { get; set; }
public string Name { get; set; }
public Person Person { get; set; }
public int? PPPPP { get; set; }
}

class TestContext : DbContext
{
public DbSet<Person> Persons { get; set; }
public DbSet<Car> Cars { get; set; }

public TestContext(string connectionString) : base(connectionString)
{
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);

base.OnModelCreating(modelBuilder);
}
}

在我的示例中,我想将外键 PersonId 重命名为 PPPPP。在我的映射中,我说:
modelBuilder.Entity<Car>()
.HasOptional(x => x.Person)
.WithMany()
.HasForeignKey(x => x.PPPPP)
.WillCascadeOnDelete(true);

但是我的关系是一对零,恐怕我在使用 WithMany 方法时会出错,但是 EF 使用正确的映射生成数据库,并且一切正常。

请说我的 Fluent API 代码是否有误,或者像现在这样的好方法已经完成。

感谢帮助。

最佳答案

我在这里没有看到使用 fluent API 的问题。如果您不想要 Cars 上的集合导航属性(即: Person )类,您可以使用 less 参数 WithMany方法。

关于entity-framework - 指定外键 Entity Framework 代码优先,Fluent Api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9858897/

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