Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.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# EF 6:另一个复杂类型中的嵌套复杂类型_C#_Entity Framework - Fatal编程技术网

C# EF 6:另一个复杂类型中的嵌套复杂类型

C# EF 6:另一个复杂类型中的嵌套复杂类型,c#,entity-framework,C#,Entity Framework,假设我有一个名为“car”的实体 我使用复杂类型来定义“引擎”部分 当我运行此代码时,我收到来自EF 6的错误消息: System.InvalidOperationException:类型“Engine”已配置为实体类型。无法将其重新配置为复杂类型 public class EngineConfiguration : ComplexTypeConfiguration<Engine> { } public class EngineTypeConfiguration : ComplexT

假设我有一个名为“car”的实体

我使用复杂类型来定义“引擎”部分

当我运行此代码时,我收到来自EF 6的错误消息:

System.InvalidOperationException:类型“Engine”已配置为实体类型。无法将其重新配置为复杂类型

public class EngineConfiguration : ComplexTypeConfiguration<Engine>
{
}
public class EngineTypeConfiguration : ComplexTypeConfiguration<EngineType>
{
}
如果我删除EngineType的定义,它会起作用


有没有办法在另一个复杂类型中添加嵌套复杂类型?

编辑:这已经改变,EF6现在支持嵌套复杂类型,请记住将每个类型都设置为复杂类型

public class EngineConfiguration : ComplexTypeConfiguration<Engine>
{
}
public class EngineTypeConfiguration : ComplexTypeConfiguration<EngineType>
{
}

原始答案:不,ComplexTypes只能包含基元类型。我第一次读这本书是在朱莉·勒曼的书中 ,
我认为EF6没有取消这一限制。

是的。在我的应用程序中,我让它与嵌套类型一起工作。但是看你的代码,我看不出错误。我使用了流畅的配置,而不是数据属性

protected sealed override void OnModelCreating(DbModelBuilder modelBuilder)
  modelBuilder.ComplexType<SampleComplexType>();
}
模型创建时受保护的密封覆盖无效(DbModelBuilder modelBuilder)
modelBuilder.ComplexType();
}

我没想到这会适用于嵌套的复杂类型,但我可以确认它也适用于我。
protected sealed override void OnModelCreating(DbModelBuilder modelBuilder)
  modelBuilder.ComplexType<SampleComplexType>();
}