我正在开发一个实体框架代码第一数据库。我有两个0..1-0..1关系的类:
[Table("VociRicevuta")]
public partial class VoceRicevuta
{
[Key]
public long Id { get; set; }
[...]
[ForeignKey("Prestazione")]
public long? IdPrestazione { get; set; }
[...]
public virtual Prestazione Prestazione { get; set; }
}
[Table("Prestazioni")]
public partial class Prestazione
{
[Key]
public long Id { get; set; }
[...]
[InverseProperty("Prestazione")]
public virtual VoceRicevuta VoceRicevuta { get; set; }
}
Prestazione是否可以参考VoceRicevuta,VoceRicevuta可能有或没有Prestazione(注意很长?)。
现在,我真的无法弄清楚如何配置与FluentAPI的关系。我不能使用.Map,因为我已经在我的实体上有IdPrestazione。
这就是我的尝试:
modelBuilder.Entity<VoceRicevuta>().HasOptional(x => x.Prestazione).WithOptionalDependent(x => x.VoceRicevuta);
但是这段代码完全忽略了我已存在的IdPrestazione字段,并在数据库中创建了一个新的Prestazione_Id字段来创建te FK。 我需要“IdPrestazione”有很多原因,包括表现。
我尝试修改迁移产生的迁移代码(用于创建数据库),但现在我收到了非有效字段的错误(“Prestazione_Id不是有效字段”)。
如何让EF识别IdPrestazione属性? 感谢!!!
答案 0 :(得分:0)
尝试这样的方法,将对象放在一个字段中,EF将为你做外键关系
[Table("VociRicevuta")]
public partial class VoceRicevuta
{
[Key]
public virtual Prestazione { get; set; }
[...]
public long? IdPrestazione { get; set; }
[...]
public virtual Prestazione Prestazione { get; set; }
}
[Table("Prestazioni")]
public partial class Prestazione
{
[Key]
public long Id { get; set; }
[...]
[InverseProperty("Prestazione")]
public virtual VoceRicevuta VoceRicevuta { get; set; }
}