kda*_*awg 3 entity-framework poco entity-framework-4
我在尝试执行a FunctionImport
- 结果映射到POCO ComplexType 时收到错误- 来自自定义内部ObjectContext
.具体来说,错误说明:
BlahComplexType
ExecuteFunction中的type参数与BlahComplexType
函数返回的类型不兼容.
因为我正在使用自定义ObjectContext
(我正在使用完全POCO实体框架环境),所以我必须FunctionImport
手动调用,我喜欢这样:
var blah = ExecuteFunction<BlahComplexType>("GetBlah", MergeOption.NoTracking,
new ObjectParameter("p_one", paramOne),
new ObjectParameter("p_two", paramTwo),
new ObjectParameter("p_three", string.Empty));
Run Code Online (Sandbox Code Playgroud)
我没有使用任何T4模板来生成POCO,所有类都是手动编写的. BlahComplexType
是一个具有简单数据类型属性的类.它的定义与.edmx文件中的ComplexType定义相匹配,包括匹配的命名空间和所有内容(我还有很多其他实体和复杂类型映射到POCO).
msdn文档在这里指出ExecuteFunction<T>
必须实现的返回类型IEntityWithChangeTracker
,但不是映射到ComplexType而不是实体的整点,正是因为我不关心任何更改(事实上,不允许更改 - BlahComplexType被认为是"价值对象")?
有没有人有幸用ExecuteFunction调用FunctionImport,其结果映射到带有Entity Framework 4的POCO ComplexType?
哇,愚蠢的用户错误!!
与手动创建POCO类一样 - EDMX文件中的ComplexType定义与其POCO类之间存在不一致.如果只有一个错误或不一致,则错误消息会尝试告诉您问题的根源.但是,如果你有多个,它只会声明类型是"不兼容的",所以你不禁要问.
在我的情况下,我有一个属性名称不一致(一个有"AcctId",另一个有"Acctid")和属性数据不一致(类期望int(Int32)但存储过程返回Int16).
因此,一如既往,双重和三重检查EDMX定义和POCO类定义.(我仔细检查,但忽略了三重检查!!)
捂脸
归档时间: |
|
查看次数: |
8307 次 |
最近记录: |