【发布时间】:2018-07-29 07:27:28
【问题描述】:
假设在使用 Ef 6 的应用程序中,我有以下模型和 fluentapi 配置,这些配置定义了车主与他拥有的汽车之间的关系。 Car 和 CarOwner 的关系是 1 比 0 或 1,而 CarOwner 和 Car 的关系是 1 比 0 或多;
public class Car
{
public int Id { get; set; }
public string ChasisNumber { get; set; }
public string EngineNumber { get; set; }
public CarOwner CarOwner { get; set; }
}
public class CarOwner
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public IList<Car> Cars {get; set;}
}
对应的fluent api配置如下图
public class CarConfiguration : EntityTypeConfiguration<Car>
{
HasKey(a => a.Id);
Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
HasOptional(x => x.CarOwner).WithMany(x => x.Cars).Map(x => x.MapKey("CarOwner_Id"));
}
public class CarOwnerConfiguration : EntityTypeConfiguration<CarOwner>
{
HasKey(a => a.Id);
Property(a => a.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();
HasMany(a => a.Cars).WithOptional(a => a.CarOwner);
}
在 EF Core 2.0 中,Car 模型发生了变化,因为需要将模型中的 CarOwner 外键指定为可为空的整数属性,但我不想这样做。
public class Car
{
public int Id { get; set; }
public string ChasisNumber { get; set; }
public string EngineNumber { get; set; }
public int? CarOwnerId { get;set; }
public CarOwner CarOwner { get; set; }
}
有没有办法可以防止将 CarOwnerId 添加为 Car 实体中的引用键?我想确保我的模型与 Entity Framework 6 中的模型保持一致。我不想对我的模型进行任何更改。我希望在 fluent api 配置文件中进行所有必要的更改。
【问题讨论】:
标签: c# .net entity-framework-6 ef-code-first ef-core-2.0