【问题标题】:Can I map incomplete sproc columns to an entity?我可以将不完整的 sproc 列映射到实体吗?
【发布时间】:2010-02-04 05:34:13
【问题描述】:

我正在使用最新的 Visual Studio 2010 测试版和实体框架。它大多非常整洁,但这是我的情况:

  • 我有一个表 T,其中包含 IdName 列。
  • 我有一个具有IdName 属性的自动生成实体。
  • 最后,我有一个存储过程,它只从 T 中选择 Id

尝试将我的实体映射到存储过程会导致EntityCommandExecutionException

[实体] 的成员“名称”在数据读取器中没有同名的对应列。

这是有道理的,但是是否有某种方法可以从存储过程调用中部分填充我的实体,然后稍后通过第二个查询完全实现它?

九个月前,the answer 对这个问题似乎涉及大量的体力劳动。就我而言,我们有数百个存储过程,实际上它们都没有返回完整的行。从那时起,实体框架已经走了很长一段路,所以我希望有些东西可能已经改变了。

提前感谢您的帮助!

【问题讨论】:

  • 你的实体真的只有IdName,还是你“简化了”?
  • 简化了!然而,我们确实有数百个这样的案例,所以我觉得我必须在某个地方进行概括。出于好奇,这有什么关系?
  • 好吧,让 EF 4 映射一个返回标量的 proc 很简单,Id 是标量,对吧?然后,您可以通过Context.Ts.Where(t => t.Id == id).Single() 实现“其他”字段
  • 是的,你是对的 - 我可以手动获取实体。大多数都需要映射到复杂类型而不是标量,但可以做到。我自然而然地希望有一些更自动的东西。 :-(
  • 您可以自定义 T4,以便复杂类型自动获取实体化实体的方法......

标签: entity-framework


【解决方案1】:

一种方法可能是将过程结果映射为复杂类型,然后自定义代码生成以向该类型添加方法,从而实现整个对象。

这个想法的一个可能问题是我不确定是否可以为复杂类型自定义代码生成。您当然可以为实体类型自定义代码生成,as explained in great detail in this post。似乎您也应该能够自定义复杂类型,但我从未尝试过。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 2019-12-07
    • 1970-01-01
    • 2020-01-28
    • 2019-10-12
    • 2014-09-24
    • 2014-11-17
    • 2016-07-11
    相关资源
    最近更新 更多