使用实体框架从存储过程复制的数据

时间:2011-12-01 16:32:46

标签: entity-framework

我在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

实体数量正确但属性包含相同的值。有什么想法可能会发生这种情况吗?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您在实体上的密钥可能不是唯一的。当将存储过程的结果返回到实体时,这个小错误已经多次抓到我。

要修复它,只需进入您的实体模型,删除实体上的现有密钥,并确保您选择的新密钥是唯一的。

希望这有帮助。

相关问题