2010-08-27 46 views
1

我有一个存储过程,它使用一对表并创建一个交叉表结果集。为了创建交叉表结果集,我使用CASE语句,这些语句是根据表中的记录动态生成的。从存储过程创建具有动态的实体sql

是否有可能使用ADO.NET实体框架从此SP生成实体?因为每次我尝试Get Column Information为特定的SP,它说The selected stored procedure returns no columns

任何帮助,将不胜感激。

回答

5

我的团队成员最近遇到类似这样的情况,存储过程正在生成各种动态SQL并返回计算列,因此数据上下文不知道该怎么做。我还没有尝试过自己呢,但是这是他声称工作的解决方案:

的解决方案是简单地放线 “SET FMTONLY OFF;”入PROC。 这允许Data Context到 实际上会生成返回类。 这在这种情况下工作,只是因为 proc除了查询 数据外什么都不做。

全部细节在这里: http://tonesdotnetblog.wordpress.com/2010/06/02/solution-my-generated-linq-to-sql-stored-procedure-returns-an-int-when-it-should-return-a-table/

你只需要“SET FMTONLY OFF”在 的PROC足够长的时间来产生 类。然后你可以评论它。

+0

谢谢!!奇迹般有效。只希望我问过这个问题,这样我就可以将你的问题标记为答案。 – 2010-09-22 19:49:42

+1

David:只有当我们拥有sp中的动态查询的条件逻辑并且调用代码不需要任何输入时,它才能工作。如果我们有基于输入参数的条件,那么即使在SET FMTONLY OFF之后,L2Sql如何获得元数据。 – teenup 2011-01-14 13:01:06

+0

David:SET FMTONLY的+1,bcoz我不知道。 – teenup 2011-01-14 13:01:52