我有一个存储过程,它从表中返回一个选择。该表是动态选择的。程序如下:
ALTER Procedure [dbo].[GetRecordsInViewPort]
@DatabaseName VarChar(100),
@TableName VarChar(100),
AS
Declare @SQL VarChar(1000)
SELECT @SQL = 'SELECT * FROM '
SELECT @SQL = @SQL + + @DatabaseName + '.dbo.' + @TableName
EXEC(@SQL)
执行时,它在SQL中运行正常。如何从Linq-to SQL中使用此过程?当我尝试执行它时,我只回到0。 Linq-to-SQL设计器中存储过程的返回类型属性设置为(None)
,无法修改。
是否可以动态映射存储过程结果,然后返回List<<r>dynamic>
?
简而言之,我认为我希望接受存储过程的结果作为动态List,我可以通过反射在运行时访问其属性。有什么想法吗?
此外,如果在Linq-To-Entities中更容易做到这一点,我会对任何事情持开放态度。
答案 0 :(得分:1)
IEnumerable<Customer> customers = dataContext.ExecuteQuery<Customer>(
@"EXEC GetRecordsInViewPort {0},{1}", "databaseName", "Customer");
List<Customer> result = customers.ToList();
<Soapbox>
我希望接受存储过程的结果作为动态List,我可以在运行时访问它的属性
LinqToSql的重点是构造编译器检查的查询并获得编译器检查结果。如果您不想这样做,则不应使用此ORM。
您可以使用SqlConnection.ExecuteReader清楚地获取数据。
</Soapbox>