哪些DAL库支持存储过程执行和结果实现

时间:2010-10-20 10:54:47

标签: sql-server-2008 stored-procedures materialize data-layer

我已经习惯了EF,因为只要你更好地了解它,它通常会运行得很好,所以你知道如何优化你的查询。但

当您知道自己将处理大量数据时,您会选择什么?我知道我不想首先使用EF并削弱我的申请。我会编写高度优化的存储过程并调用它们来获得某些非常狭窄的结果(有很多连接因此它们可能不会仅仅返回某些实体)。

所以我有点困惑我应该使用哪种DAL技术/库?我不想使用SqlConnection / SqlCommand这样做的方式,因为我必须编写更多可能隐藏一些模糊错误的代码。

我想让bug表面尽可能小,并使用一种技术来适应我的过程而不是反过来......

是否有任何图书馆可以让我:

  • 提供名称
  • 的简单SP执行方式
  • 提供返回数据的自动实现,因此我可以通过lambda函数提供某些物化器?

像:

List<Person> result = Context.Execute("StoredProcName", record => new Person{
    Name = record.GetData<string>("PersonName"),
    UserName = record.GetData<string>("UserName"),
    Age = record.GetData<int>("Age"),
    Gender = record.GetEnum<PersonGender>("Gender")
    ...
});

甚至调用返回多个结果集等的存储过程。

List<Question> result = Context.ExecuteMulti("SPMultipleResults", q => new Question {
    Id = q.GetData<int>("QuestionID"),
    Title = q.GetData<string>("Title"),
    Content = q.GetData<string>("Content"),
    Comments = new List<Comment>()
}, c => new Comment {
    Id = c.GetData<int>("CommentID"),
    Content = c.GetData<string>("Content")
});

基本上这最后一个不起作用,因为这个不知道如何将两者绑定在一起......但是你明白了。

所以要把它归结为一个问题:是否存在针对存储过程执行和数据实现进行优化的DAL库?

1 个答案:

答案 0 :(得分:0)

Business Layer Toolkit可能正是这里所需要的。它是一个轻量级ORM工具,支持许多场景,包括多个结果集,尽管它们看起来很复杂。