L2Entities,存储过程和映射

时间:2009-04-15 22:28:11

标签: asp.net sql stored-procedures linq-to-entities mapping

最后检查了L2E框架并几乎立即遇到了问题 是的,我知道......我之前应该读一些书。

情况:

带道具的实体 - > id和名字。
  entity映射到table,其中包含id和name列   sproc,只返回id列。

问题:

ObjectResult<MyProp> result = _container.MyStoredProcedure(uberParameter);

调用此方法会导致错误

[有罪的方法在这里]抛出异常: System.Data.EntityCommandExecutionException:数据读取器与指定的“DataBase.MyPropTableObject”不兼容。类型为“name”的成员在数据读取器中没有相应的具有相同名称的列。

问题#2:

不能“返回”该字段,导致该列具有XML数据类型,但是sproc使用花式选择语句,这会导致:

Msg 421,Level 16,State 1,Line 1 无法将xml数据类型选为DISTINCT,因为它无法比较。

问题:
是否可以仅为此一个sproc专门关闭此实体prop的映射?

1 个答案:

答案 0 :(得分:1)

问题1是由于proc没有填充实体的列。如果已映射表,则不需要proc,只需使用linq

选择所需的字段即可
var result = MyEntities.EntityIMapped.First(r => r.id = uberParameter).Name;

将为您提供给定ID的表的Name列中的值。您不需要为此使用存储过程。

问题2听起来像在proc中,我认为在xml数据列上的不同会产生很多结果,但我只是在猜测,因为我不知道你的解决方案。

这不是您问题的直接答案,但希望它会指出您正确的方向。