【发布时间】:2010-02-04 05:34:13
【问题描述】:
我正在使用最新的 Visual Studio 2010 测试版和实体框架。它大多非常整洁,但这是我的情况:
- 我有一个表 T,其中包含
Id和Name列。 - 我有一个具有
Id和Name属性的自动生成实体。 - 最后,我有一个存储过程,它只从 T 中选择
Id。
尝试将我的实体映射到存储过程会导致EntityCommandExecutionException:
[实体] 的成员“名称”在数据读取器中没有同名的对应列。
这是有道理的,但是是否有某种方法可以从存储过程调用中部分填充我的实体,然后稍后通过第二个查询完全实现它?
九个月前,the answer 对这个问题似乎涉及大量的体力劳动。就我而言,我们有数百个存储过程,实际上它们都没有返回完整的行。从那时起,实体框架已经走了很长一段路,所以我希望有些东西可能已经改变了。
提前感谢您的帮助!
【问题讨论】:
-
你的实体真的只有
Id和Name,还是你“简化了”? -
简化了!然而,我们确实有数百个这样的案例,所以我觉得我必须在某个地方进行概括。出于好奇,这有什么关系?
-
好吧,让 EF 4 映射一个返回标量的 proc 很简单,
Id是标量,对吧?然后,您可以通过Context.Ts.Where(t => t.Id == id).Single()实现“其他”字段 -
是的,你是对的 - 我可以手动获取实体。大多数都需要映射到复杂类型而不是标量,但可以做到。我自然而然地希望有一些更自动的东西。 :-(
-
您可以自定义 T4,以便复杂类型自动获取实体化实体的方法......
标签: entity-framework