将实体映射到基础和继承类时,Entityframework会引发错误

时间:2014-07-02 11:02:26

标签: entity-framework inheritance mapping

当我尝试将实体映射到基类的属性和派生类的另一个属性时出现错误。

实施例: Inheritence

错误是:错误1正在运行转换:无法在类MyModel.Racer中定义名为Car的成员。它在祖先类MyModel.Person中定义。

我的DB模型中有错误吗?

enter image description here

3 个答案:

答案 0 :(得分:1)

FavouriteCarID不应出现在继承类型的实体上 - 它应该只映射到基类型的属性。

尝试从人员删除FavouriteCarID 或从Racer RaceCarID

因为CarID已经与人物映射。所以我们不能再在Racer表中引用它...

它就像你试图为人创造一个重复的类......所以它导致错误的家伙......

我希望你能纠正这个问题...... 删除 Car Racer 表之间的映射。它会起作用

答案 1 :(得分:0)

请找到表格结构....希望你能找到这个。这种方式你可以创建Db结构知道吗??

public class car 
{
    public int CarID { get; set; }
}


public class Person 
{
    public int personid { get; set; }

     // List<Favourite> .. we can do by querying dude only.

}

public class FavouriteCarList : Person, car
{
    public int ID { get; set; }//pk
    public int personid { get; set; }//FK
    public int FavoriteCarID { get; set; }//FK from Car
}


public class Racer : car,person 
{
    public int ID { get; set; }//pk
    public int personid { get; set; } //Fk
    public int RaceCarID { get; set; }//FK from Car

}

答案 2 :(得分:0)

这里的问题是Navigationproperties。我只需要将Baseclass中的“Car”-Propertie重命名为“FavouriteCar”,并将派生类“Car”重命名为RaceCar。工作得很好!