2010-02-03 88 views
0

我正在使用Visual Studio 2010的最新测试版和实体框架。这主要是很整洁,但这里是我的情况:我可以将不完整的sproc列映射到实体吗?

  • 我有列IdName一个表T。
  • 我有一个自动生成的实体,具有IdName属性。
  • 最后,我有仅选择从Id T.

试图我的实体映射到存储过程的结果在存储过程中的EntityCommandExecutionException

的〔实体]一种构件,'名称',在数据读取器中没有相应的列具有相同的名称。

这是有道理的,但是有一些方法可以从存储过程调用部分填充我的实体,然后再完全用第二查询后兑现了吗?

九个月前,the answer这个问题似乎涉及大量的体力劳动。就我而言,我们有数百个存储过程,并且从字面上看,它们都没有返回完整的行。从那以后,实体框架已经走过了很长的一段路,所以我希望可能会发生一些变化。

非常感谢您的帮助!

+0

它真的*你的实体只有'Id'和'Name',或者你“简化了?”的情况吗? – 2010-02-03 18:52:53

+0

简化了!但是,我们确实有数百个这样的案例,所以我觉得我不得不在某处推广。出于好奇,这有什么关系? – ladenedge 2010-02-03 19:15:09

+1

那么,让EF 4映射一个返回标量的proc并且'id'是标量是很简单的,对吗?然后你可以通过Context.Ts.Where(t => t.Id == id)实现“other”字段。单()' – 2010-02-03 19:40:06

回答

1

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

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