我有一个存储过程,它根据临时表返回动态结果集。我的项目使用LINQ for Data Access,但是我不能将LINQ与这个存储过程合并,因为它有一个动态的“形状”(我不能事先说出哪些列会回来或者会有多少列),所以LINQ无法在设计时生成可以保存结果的对象。
我正在尝试使用SQLDataAdapter等集成旧式的存储过程,但我希望我仍然可以绑定到LINQ,这样我就不需要管理单独的事务机制,因为这将是一个灾害。
这可能吗?感谢。
答案 0 :(得分:2)
一个最佳实践是永远不应对存储过程进行编码,使其根据输入在结果集中给出不同的列。
听起来你的设计导致单个存储过程试图做太多事情。我强烈建议你改变它。
答案 1 :(得分:1)
首先 - 您没有使用“LINQ”进行数据访问。我的猜测是你正在使用Entity Framework进行数据访问。如果是,则取决于您使用的EF版本。
实体框架4中的新功能是从存储过程中整形数据。有关分步说明,请参阅此博文:http://blogs.msdn.com/b/nihitk/archive/2010/04/23/ado-net-entity-designer-in-vs-2010-stored-procedure-return-type-shape-sensing.aspx
如果您使用的是.NET 3.5附带的Entity Framework 1,那么没有EF无法感知存储的proc数据的形状。