EF错误代码第一个错误3004

时间:2015-08-28 10:42:23

标签: c# asp.net-mvc entity-framework mapping

我使用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; }
}

2 个答案:

答案 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。