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