我有一个问题,关于在EF Code First Fluent API中定义外键。我的情况如下:
有两个类Person和Car。在我的情况下,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 代码是否有误或者现在做的方式是一个好方法。
感谢您的帮助。