我在VS2010 .NET 3.5中使用实体框架来公开存储过程。 VS中的结果不正确,但手动执行存储过程的结果看起来不错。例如:
这是sp,它只使用LIKE返回基于搜索字符串的不同名称:
SELECT Name,GETDATE() AS Date FROM
(SELECT DISTINCT Name FROM Customers WHERE Name LIKE 'br') dt_result
在SQL Mgt Studio中从查询分析器执行时,结果看起来是正确的:
Name Date
Brian 2011-12-01 10:59:40.093
Brady 2011-12-01 10:59:40.093
Bryan 2011-12-01 10:59:40.093
我在VS中公开存储过程的结果的代码如下所示:
var results = (from i in dbentities.SearchName('br')
select i).ToList();
但结果包含:
Name Date
Brian 2011-12-01 10:59:40.093
Brian 2011-12-01 10:59:40.093
Brian 2011-12-01 10:59:40.093
实体数量正确但属性包含相同的值。有什么想法可能会发生这种情况吗?
提前致谢。
答案 0 :(得分:1)
您在实体上的密钥可能不是唯一的。当将存储过程的结果返回到实体时,这个小错误已经多次抓到我。
要修复它,只需进入您的实体模型,删除实体上的现有密钥,并确保您选择的新密钥是唯一的。
希望这有帮助。