【发布时间】:2021-09-19 15:26:06
【问题描述】:
我有两个实体,Prospect 和Person,我想做的是使用Prospect.ID 作为Prospect 表的主键和PersonID 的外键,我的想法是对两个实体使用相同的 ID,而不需要在我的 Prospect 实体上使用 PersonID。当潜在客户保存在数据库中时,它会尝试保存 PersonID,即使我的 Prospect 实体上没有此属性,我想知道 EF 核心是否支持这种关系。
这是我在模型构建器上得到的:
modelBuilder.Entity<ProspectDto>(builder => { builder.ToTable("Prospects"); builder.HasKey(prospect => prospect.ID); });
modelBuilder.Entity<PersonDto>(builder => { builder.HasOne(p => p.Prospect).WithOne().HasForeignKey<ProspectDto>(pe => pe.ID); });
这是在数据库上执行的内容:
INSERT INTO [Prospects] ([ID], [PersonID]) VALUES (@p421, @p422)
PersonDto:
public class PersonDto : DtoBase
{
public PersonDto()
{
}
public ProspectDto Prospect { get; set; }
}
ProspectDto:
public class ProspectDto : DtoBase
{
public ProspectDto()
{
}
public PersonDto Person { get; set; } = new PersonDto();
}
DtoBase:
public abstract class DtoBase
{
public Guid ID { get; protected set; }
}
谢谢。
【问题讨论】:
-
请出示
ProspectDto和PersonDto类声明(您可以跳过数据字段,与问题无关)。 -
@Dmitry 更新
-
嗯,看不到任何
ID字段...猜猜它可能存在于DtoBase...您能否提供有关您的模型的所有信息,与问题相关? -
@Dmitry 更新
标签: c# entity-framework-core ef-model-builder