我有兩個實體,展望和人,我試圖做的是使用Prospect.ID作爲ProspectTable的主鍵和PersonID的外鍵,我的ideia使用兩個實體的相同ID,而不需要我的Prospect實體上的PersonID。當前景被保存在數據庫中時,它會嘗試保存一個PersonID,即使我沒有在我的Prospect實體上有這個屬性,我想知道ef核心是否支持這種關係。EF核心:同時使用ID作爲主鍵和外鍵
下面是我在模型構建器上得到的結果。
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
@Dmitry更新 –
嗯,看不到任何'ID'字段...猜猜它可能存在於'DtoBase'中...您能否提供關於您的模型的所有信息,與問題有關? – Dmitry