最后检查了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的映射?
答案 0 :(得分:1)
问题1是由于proc没有填充实体的列。如果已映射表,则不需要proc,只需使用linq
选择所需的字段即可var result = MyEntities.EntityIMapped.First(r => r.id = uberParameter).Name;
将为您提供给定ID的表的Name列中的值。您不需要为此使用存储过程。
问题2听起来像在proc中,我认为在xml数据列上的不同会产生很多结果,但我只是在猜测,因为我不知道你的解决方案。
这不是您问题的直接答案,但希望它会指出您正确的方向。