错误:准备命令定义时发生错误

时间:2016-11-17 19:56:12

标签: c# asp.net-mvc entity-framework stored-procedures complextype

我在模型浏览器中的功能导入下有2个存储过程,比如说 ProcA ProcB ,每个都有自己的复杂类型,分别说 TypeA Type2

TypeA属性:

unsigned char& operator[](__int64 i)
{
...
}

TypeB属性

Int32 SomeId;
String PersonName;
String PersonAddress;

一切都很好,功能齐全,除非我尝试将 TypeA 嵌套到 TypeB 中, TypeB 基本上是 TypeA 的副本,另外还有2个附加属性。

TypeB属性

Int32 SomeId;
String PersonName;
String PersonAddress;
Int32 Age;
Int32 Height;

ProcA工作正常但是当我调用ProcB时会引发异常:

  

错误:准备命令定义时发生错误。看到   细节的内在例外。

     

Message =“ReturnType中的嵌套ComplexType属性'TypeA'   不支持函数'ProcB'的'TypeB',请考虑   展平嵌套的ComplexType属性。“

我是否必须使用扁平复杂类型并且在我的情况下无法进行嵌套?

我只是想减少代码行并强制重用。

对此的任何输入都会很棒。 如果我能提供更多信息,请告诉我。

PS:DB.Context.cs文件中出现错误

Int32 Age;
Int32 Height;
TypeA TypeAObj; // nesting typeA here

感谢

1 个答案:

答案 0 :(得分:1)

这不起作用。从EF 6.0开始,它不受支持。

查看此链接。该属性为此错误背后的问题提取了本地化字符串,它仍然存在于EF 6.0中:

https://msdn.microsoft.com/en-us/library/microsoft.data.entity.design.resources.mappingdetails_errcomplextypepropertiesnotsupported(v=vs.113).aspx#P:Microsoft.Data.Entity.Design.Resources.MappingDetails_ErrComplexTypePropertiesNotSupported

版本历史记录并未表明他们已解决此问题:

https://msdn.microsoft.com/en-us/library/jj574253(v=vs.113).aspx

我发现一个回到2010年的帖子说“它在积压中”:

https://social.msdn.microsoft.com/Forums/en-US/c412a7d7-9455-47bc-87dd-46d3f0809b1b/mapping-a-stored-procedure-to-an-entity-that-contains-complex-types?forum=adodotnetentityframework

使用VS2013和最新的EF进行的快速本地测试证实了这一点:

Quick local test in VS2013 with latest EF confirms this.