【问题标题】:SubSonic and Stored ProceduresSubSonic 和存储过程
【发布时间】:2008-10-23 01:22:33
【问题描述】:

在使用 SubSonic 时,您是将数据作为数据集返回还是将其放入强类型自定义集合或通用对象中?

我运行了亚音速项目,对于我的数据库中的四个存储过程,它给了我一个 Sps.cs,其中包含 4 个返回一个 StoredProcedure 对象的方法。

如果您使用 MVC,您通常使用 StoredProcedure 对象还是将其包裹在您的业务逻辑中并返回数据集、列表、集合或其他内容?

数据集仍然是常态还是被其他东西取代了?

【问题讨论】:

    标签: stored-procedures subsonic


    【解决方案1】:

    如果存储过程的结果与您的一个表具有相同的架构,您可以使用以下代码(SubSonic 2.1)构建一个集合:

    ProductCollection coll = new ProductCollection();
    coll.LoadAndCloseReader(SPs.GetProducts(1).GetReader());
    

    【讨论】:

      【解决方案2】:

      ExecuteTypedList<> 在这种情况下是你最好的朋友:

      IList<Product> list=SPs.GetProducts().ExecuteTypedList<Product>();
      

      【讨论】:

      • 这里的最佳答案在 SubSonic 3 中不起作用,上面是。仅供参考。
      【解决方案3】:

      如果我的存储过程从我拥有 SubSonic 对象的一个​​表中返回所有字段,那么我会对存储过程的结果执行 LoadAndCloseReader。如果我的存储过程返回的数据与 SubSonic 对象不匹配,那么我只需将其作为数据集使用。

      【讨论】:

        【解决方案4】:

        可能会返回一个数据读取器,然后对其进行迭代以填充一些自定义对象。或者,快速而肮脏的方式(因为您没有使用域驱动设计)在数据库中创建一个与存储过程具有相同结构的视图,然后将结果加载到类似于 John 的代码的 ViewObjectCollection 中。

        【讨论】:

          【解决方案5】:

          你可以做数据阅读器,但那是 1999 年的事。使用 SubSonic,返回对象是一件轻而易举的事,而且比数据阅读器更容易使用。您可以像这样检索对象:

          Dim Charts As Generic.List(Of MusicDB.Billboard) = _
              New SubSonic.Select(MusicDB.DB.Repository.Provider, New String() _
              {"Prefix", "Artist", "Track", "ArtistNarrowToken", "TrackNarrowToken", "ArtistId", "TrackId", "TrackYear"}). _
              From(MetadataTagger.MusicDB.Tables.Billboard). _
              Where(MusicDB.Billboard.Columns.ArtistNarrowToken).IsLessThan(10). _
              Or(MusicDB.Billboard.Columns.TrackId).IsNull(). _
              OrderAsc(New String() {"TrackYear"}).ExecuteTypedList(Of MetadataTagger.MusicDB.Billboard)()
          

          【讨论】:

          • 它很像 link2sql。它“可能”并不容易,但它更容易阅读,而且它是强类型的。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多