指定外键实体框架代码首先,Fluent Api

pat*_*o88 7 entity-framework fluent-interface foreign-keys ef-code-first

我有一个关于在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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的示例中,我想将外键PersonId重命名为PPPPP.在我的映射中我说:

modelBuilder.Entity<Car>()
            .HasOptional(x => x.Person)
            .WithMany()
            .HasForeignKey(x => x.PPPPP)
            .WillCascadeOnDelete(true);
Run Code Online (Sandbox Code Playgroud)

但我的关系是一到零,我担心我错误地使用WithMany方法,但EF生成具有适当映射的数据库,一切运行良好.

请说我的Fluent API代码是否错误,或者像现在这样做的好方法就完成了.

感谢帮助.

Era*_*nga 3

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