gpt4 book ai didi

entity-framework - Entity Framework 4 -- FunctionImport 的 ExecuteFunction 映射到 POCO 复杂类型的问题

转载 作者:行者123 更新时间:2023-12-03 23:38:27 25 4
gpt4 key购买 nike

我在尝试执行 FunctionImport 时收到错误消息-- 结果映射到 POCO ComplexType -- 来自自定义 ObjectContext .具体来说,错误状态:

The type parameter BlahComplexType in ExecuteFunction is incompatible with the type BlahComplexType returned by the function.

因为我使用的是自定义 ObjectContext (我正在使用完全 POCO Entity Framework 环境),我必须调用 FunctionImport手动,我喜欢这样:

var blah = ExecuteFunction<BlahComplexType>("GetBlah", MergeOption.NoTracking,
new ObjectParameter("p_one", paramOne),
new ObjectParameter("p_two", paramTwo),
new ObjectParameter("p_three", string.Empty));

我没有使用任何 T4 模板生成 POCO,所有类都是手动编写的。 BlahComplexType是具有简单数据类型属性的类。它的定义与 .edmx 文件中的 ComplexType 定义匹配,包括匹配的命名空间和所有内容(我还有很多其他实体和复杂类型映射到 POCO)。

msdn 文档说明 here ExecuteFunction<T> 的返回类型必须实现 IEntityWithChangeTracker ,但映射到 ComplexType 而不是 Entity 的全部意义不正是因为我不关心任何更改(事实上,更改是不允许的——BlahComplexType 被视为“值对象”)?

有没有人幸运地调用了带有 ExecuteFunction 的 FunctionImport,其结果映射到带有 Entity Framework 4 的 POCO ComplexType?

最佳答案

哇,愚蠢的用户错误!!

与手动创建 POCO 类一样——这是 EDMX 文件中的 ComplexType 定义与其 POCO 类之间的不一致。如果只有一个错误或不一致,则错误消息会尝试告诉您问题的根源。但是,如果您有多个,它只会声明这些类型“不兼容”,所以您会感到疑惑。

在我的例子中,我有一个属性名称不一致(一个有“AcctId”,另一个有“Acctid”)和一个属性数据不一致(类期望 int (Int32) 但存储过程返回 Int16)。

因此,一如既往,仔细检查 EDMX 定义和 POCO 类定义。 (我仔细检查了,但忽略了三次检查!!)

捂脸

关于entity-framework - Entity Framework 4 -- FunctionImport 的 ExecuteFunction<T> 映射到 POCO 复杂类型的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547394/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com