我有一个具有以下结构的模型,其中我有可以在系统中使用的代码列表。
汽车和引擎之间存在一对一的关系,因此我希望将引擎详细信息映射到 Car 表,因此引擎不是实体,它只是域模型抽象。该引擎包含一个描述引擎类型的代码。
我的 dbcontext 有一个用于 CodeList 和 Car 的 DbSet,因为它们是系统中的两个聚合根。当我尝试将其映射到数据库时,出现以下错误:
模式中的每个类型名称都必须是唯一的。类型名称“代码”已定义。
如果我删除 Engine 类中的 Navigation 属性,那么问题就会消失,但我希望能够访问 Code 值而不必独立查找它。如果我删除虚拟并尝试直接映射代码的 id 属性,它会告诉我代码被定义为实体并且可能不会被重新定义为复杂类型。我不确定我哪里出了问题,这似乎是一个直接的用法。看起来 Engine 被视为复杂类型,因此不能具有导航属性。
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;}
}