我使用EF设计器创建了这个简单的图表,并且代码已经生成,但是当我生成解决方案时,我收到了这个错误:
Erreur 1 Erreur 3004:Problèmedefragments demappageàpartirde la ligne 84:Aucun mappagen'estpécifiépourlespropriétésintDB.tpintDB_id_tpintdans Jeu intDBs。 Unetantuséveclé(PK)n'effectuera pas d'aller-retour lorsque: [Entité]是[helpdeskModel.intDB]类型
this is a link to an image of my diagram
以下是代码:
public partial class helpdeskEntities : DbContext
{
public helpdeskEntities()
: base("name=helpdeskEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public DbSet<intDB> intDBs { get; set; }
public DbSet<tpintDB> tpintDBs { get; set; }
}
}
public partial class intDB
{
public int ID { get; set; }
public Nullable<System.DateTime> debint { get; set; }
public Nullable<System.DateTime> finint { get; set; }
public Nullable<int> id_int { get; set; }
public decimal id_tpint { get; set; }
[ForeignKey("id_tpint")]
public virtual tpintDB tp_intDB { get; set; }
}
}
public partial class tpintDB
{
public decimal id_tpint { get; set; }
public string libelle { get; set; }
public string desc_tpint { get; set; }
public virtual ICollection<intDB> intDBs { get; set; }
}
}
我的新intDB模型:
public partial class intDB
{
public int ID { get; set; }
public Nullable<System.DateTime> debint { get; set; }
public Nullable<System.DateTime> finint { get; set; }
public Nullable<int> id_int { get; set; }
[ForeignKey("id_tpint")]
public virtual int tp_intDB { get; set; }
}
答案 0 :(得分:1)
如果没有一段代码(即实体类),我们无法确定问题是什么。但问题似乎对我来说很明显:在intdb实体中你需要这个属性:
public virtual tpintDB tpintDB { get; set; }
,在tpintDB中,您需要public ICollection <intDB> intDBList { get; set; }
。
另外,请确保启用自动迁移或自行添加迁移。
<强>更新强>
我更新了我的答案,以便您可以更好地了解如何宣布实体。
public partial class intDB
{
public int ID { get; set; }
public Nullable<System.DateTime> debint { get; set; }
public Nullable<System.DateTime> finint { get; set; }
public Nullable<int> id_int { get; set; }
public int id_tpint { get; set; }
[ForeignKey("id_tpint")]
public virtual tpintDB tp_intDB { get; set; }
}
更新2
此外,tpintDB需要看起来像这样。
public partial class tpintDB
{
public int id_tpint { get; set; }
public string libelle { get; set; }
public string desc_tpint { get; set; }
public virtual ICollection<intDB> intDBs { get; set; }
}
将ICollection视为tpintDB记住哪些intDB对象引用它的工具。我的英语现在不是最好的,但我希望你理解:D此外,我不保证这是最好的解决方案,但它对我的30多个实体在一个项目中起作用,我认为它是&#39;很干净。
答案 1 :(得分:0)
请检查Id_tpint的DataType是否相同。 您还必须为intDB和tpintDB定义主键和外键Id_tpint。