1

我习惯了 EF,因为只要您更好地了解它,它通常就可以正常工作,因此您知道如何优化查询。但。

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

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

我想让错误表面尽可能小,并使用一种能够适应我的过程的技术,而不是反之亦然......

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

  • 按名称提供简单 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 库?

4

1 回答 1

0

Business Layer Toolkit might be exactly what's needed here. It's a lightweight ORM tool that supports lots of scenarios including multiple result sets although they seem very complicated to do.

于 2010-10-20T13:37:23.990 回答