Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 架构中的每个类型名称都必须是唯一的_C#_Entity Framework - Fatal编程技术网

C# 架构中的每个类型名称都必须是唯一的

C# 架构中的每个类型名称都必须是唯一的,c#,entity-framework,C#,Entity Framework,我有一个具有以下结构的模型,其中我有可以在系统中使用的代码列表 汽车和引擎之间存在一对一的关系,所以我希望引擎细节映射到汽车表,这样引擎就不是实体,而只是一个领域模型抽象。该引擎包含描述引擎类型的代码 我的dbcontext有一个用于代码列表和Car的DbSet,因为它们是系统中的两个聚合根。当我尝试将其映射到数据库时,会出现以下错误: 架构中的每个类型名称都必须是唯一的。类型名称“Code”已定义 如果我删除Engine类中的Navigation属性,那么问题就会消失,但我希望能够访问代码值,

我有一个具有以下结构的模型,其中我有可以在系统中使用的代码列表

汽车和引擎之间存在一对一的关系,所以我希望引擎细节映射到汽车表,这样引擎就不是实体,而只是一个领域模型抽象。该引擎包含描述引擎类型的代码

我的dbcontext有一个用于代码列表和Car的DbSet,因为它们是系统中的两个聚合根。当我尝试将其映射到数据库时,会出现以下错误:

架构中的每个类型名称都必须是唯一的。类型名称“Code”已定义

如果我删除Engine类中的Navigation属性,那么问题就会消失,但我希望能够访问代码值,而不必单独查找它。如果我删除虚拟对象并尝试直接映射代码的id属性,它会告诉我代码被定义为实体,并且可能不会被重新定义为复杂类型。我不确定我在这方面哪里出了问题,这似乎是一个直截了当的用法。看起来引擎被视为复杂类型,因此不能具有导航属性

CodeList
{
    public int Id {get;set;}
    public string Name {get;set;}
    public IList<Code> codes {get;set;}
}

Code
{
    public int Id {get;set}
    public string Value {get;set;}
}


public Car
{
    public int Id {get;set;}
    public Engine Engine {get;set;}
}

public Engine 
{
    public int Size {get;set;}
    public int TypeId {get;set;}
    public virtual Code Type {get;set;}
}

当我遇到你的问题时,我也遇到了类似的问题。根据@LadislavMrnka,在EF中,a。但显然是这样。如果坚持使用EF,您将不得不更改您的型号以适应此“功能”。不管怎样,这就是我最后要做的。

我正准备在这里写一个问题并回答它。我最初的搜索没有找到这个页面,这会节省我的时间。该死的复杂类型!