您的位置:知识库 » 数据库

Linq To Sql进阶系列(五)Store Procedure篇

作者: Tom Song  来源: 博客园  发布时间: 2008-09-27 11:59  阅读: 9836 次  推荐: 0   原文链接   [收藏]  

系列文章导航:

Linq To Sql进阶系列(一)从映射讲起

Linq To Sql进阶系列(二)M:M关系

Linq To Sql进阶系列(三)CUD和Log

Linq To Sql进阶系列(四)User Define Function篇

Linq To Sql进阶系列(五)Store Procedure篇

Linq To Sql进阶系列(六)用object的动态查询与保存log篇

Linq To Sql进阶系列(七)动态查询续及CLR与SQL在某些细节上的差别


仔细比较他们的区别哦。“好像名字不一样呢”。晕倒。看主要的。第一个只有一个ElementType子项,而第二个有2个。这个地方其实可以说是OR designer的一个bug。要想修改这个bug,需要更改一个设计,而推动更改设计,比较麻烦。但并不是不能改。如果你认为这个真的很需要,而且对你很重要,你更喜欢用or designer的话,我建议你去下面的社区发帖子。
http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=123&SiteID=1
要求更改此处的问题。因为,我已经无力推动他们修复该bug,ms更乐意听来自客户的声音,说不定你会成功的哦,还有奖励的哦。
这个sprocs准确的影射代码为

        [Function(Name="dbo.Get Customer And Orders")]
        [ResultType(
typeof(GetCustomerAndOrdersResult1))]
        [ResultType(
typeof(GetCustomerAndOrdersResult2))]
        
public IMultipleResults GetCustomerAndOrders([Parameter(Name="CustomerID",
DbType
="NChar(5)")] string customerID)
        
{
            IExecuteResult result 
= this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), customerID);
            
return ((IMultipleResults)(result.ReturnValue));
        }


对于MultipleResultSets的sprocs,大家更关注如何取其返回结果。其实很简单,按顺序,一个rowset,一个rowset的取。这个顺序和你sprocs里的顺序是一样的。
IMultipleResults result = db.GetCustomerAndOrders("SEVES");
IEnumerable<CustomerResultSet> customer = result.GetResult<CustomerResultSet>();
IEnumerable<OrdersResultSet> orders = result.GetResult<OrdersResultSet>();
如果,你很贪心,再加一行的话,
IEnumerable<CustomerResultSet> customer = result.GetResult<CustomerResultSet>();
报错咯,越界了。没有那么多,你问要也不给。

0
0

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻