LINQ到SQL业务层调用SQL存储过程,并得到:无效转换的LINQ到SQL
Unable to cast object of type 'WhereSelectEnumerableIterator`2
[ERICustomersDataLayer.MergeCustomersResult,ERICustomersDataLayer.MergeCustomersResult]'
to type 'System.Collections.Generic.List`1[System.String]'.
存储过程:
ALTER PROCEDURE MergeCustomers @CurrentCustomerId UNIQUEIDENTIFIER, @MergedCustomerId UNIQUEIDENTIFIER
AS
BEGIN
DECLARE @Error VARCHAR(500);
IF NOT EXISTS (SELECT * FROM Customer WHERE Id = @CurrentCustomerId)
BEGIN
SET @Error = 'Current customer ID not in customer table '
SELECT @Error [Error]
RETURN -1
END
IF NOT EXISTS (SELECT * FROM Customer WHERE Id = @MergedCustomerId)
BEGIN
SET @Error = 'Merged customer ID not in customer table '
SELECT @Error [Error]
RETURN -1
END
END
的LINQ TO- SQL代码:
public List<string> Merge(Guid CurrentUserId, Guid MergedUserId)
{
var dc = new ERICustomersDataLayer.ERICustomersDataContext();
var rows = (
from e in dc.MergeCustomers(CurrentUserId, MergedUserId)
select e);
return (List<string>)rows;
}
在测试案例中,SP没有返回任何东西,所以这应该与空查询相同。但是,即使它返回错误消息,我也会得到相同的异常。
你的存储过程实际上选择了什么?它似乎只检查客户的存在两次,但在两个实际存在的情况下,没有发生任何事情...... – 2011-04-12 20:55:32