代码之家  ›  专栏  ›  技术社区  ›  erikkallen

SQLCLR中的数据访问模式

  •  0
  • erikkallen  · 技术社区  · 17 年前

    我在我的项目中使用SQLCLR,我对它非常满意。然而,我找不到任何好的数据访问模式的信息源。

    通常我使用存储过程在.net和SQL之间进行通信,因为我总是希望数据库有一个API。但是,在本例中,.net代码是API的一部分,因此SP看起来很糟糕。

    SQL server中不存在Linq2SQL(尽管可以通过执行DBA不喜欢的操作来安装它),因此它不是一个选项。

    目前我的代码中充斥着标准的ADO.NET代码,比如

    using (SqlCommand cmd = c.CreateCommand()) {
        cmd.CommandText = "SELECT ... FROM ...";
        using (SqlDataReader rdr = cmd.ExecuteReader()) {
            DoSomething(rdr);
        }
    }
    

    而且,尽管它是有效的,但它似乎是一种错误的方式。

    其他人是怎么做的?

    2 回复  |  直到 17 年前
        1
  •  1
  •   Remus Rusanu    17 年前

    SELECT name, type, length, ... FROM sys.columns JOIN sys.tables JOIN sys.types FOR XML PATH http://rusanu.com/2009/04/11/using-xslt-to-generate-performance-counters-code/ (该博客是关于性能计数器的,但它同样适用于DAL代码)。我还使用XSLT代码gen为结果集构建类型。

    在大型客户机上,这种方法与ORMs和ADO数据集功能重叠(我仍然在这些客户机上使用它,但这是我的问题…),在SQLCR中,由于SQLCLR特定的限制,imho是最合适的。

    这种方法首先是非常有效的 ,允许我快速进行影响每个DAL入口点的全局更改,同时我保持对代码库的绝对控制(没有外部依赖,没有外部引入的bug)。与ADO数据集相比,它非常轻量级。

        2
  •  0
  •   Jonathan Kehayias    17 年前