【问题标题】:C# Data Access Layer (Not EF but SP and objects)C# 数据访问层(不是 EF,而是 SP 和对象)
【发布时间】:2016-04-28 05:44:19
【问题描述】:

我被要求创建一个应用程序,该应用程序使用带有存储过程的现有数据库(insertupdatedelete),他们不想使用Entity Framework .

一种方法是使用System.Data.DataSet 创建我自己的数据访问层,但我想知道是否有任何现有的库或我可以使用的东西来填充来自 SP 的对象以及使用 SP 更新数据。

有什么线索吗?

【问题讨论】:

  • 检查Dapper.NET
  • 是的,实体框架。您可以将存储过程与 EF 一起使用。通常,尽管开发人员被赋予了一项任务,但没有被告知他们不能使用能够很好地完成这项工作的特定工具。为什么要求不使用 EF?
  • 大数据集的 EF 性能很糟糕。
  • Drapper 听起来不错。

标签: c# data-layer


【解决方案1】:

您可以使用像 Dapper 这样的微结构,它简单、高效并且可以正确映射到对象。

使用示例:

// Call spGetUser with a parameter Id and put the result in a User instance.  
var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
        commandType: CommandType.StoredProcedure).SingleOrDefault();

【讨论】:

  • Dapper 是否可以跟踪实体的变化?所以我可以知道什么属性被改变了等等?
  • @VAAA 你可以使用Dapper.Contrib来做。
  • 太棒了!!这就是我在看的
【解决方案2】:

如果你真的想走这条路,可以使用Automapper

看看这个帖子 How do I use automapper to map a dataset with multiple tables

不过,请记住,性能实际上可能非常糟糕。

恕我直言,EF 会是更好的选择。

【讨论】:

    【解决方案3】:

    我通常推荐使用 Dapper。它非常轻量级,其性能与 ADO.NET 编码相当。

    【讨论】:

    • Dapper 是否可以跟踪实体的变化?所以我可以知道什么属性被改变了等等?
    • 不,只是直接查询和执行操作,扩展连接对象。
    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 2011-05-08
    • 2013-07-10
    • 2018-12-18
    • 2018-03-14
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多