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

两类人和汽车。在我的场景中,汽车可以指定是否分配人(一个或零关系)。
代码:

    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/

10-14 00:32