使用 SubSonic 时,您是将数据作为数据集返回还是将其放入强类型自定义集合或通用对象中?
我运行了亚音速项目,对于我的数据库中的四个存储过程,它给了我一个 Sps.cs,其中包含 4 个返回一个 StoredProcedure 对象的方法。
如果您使用 MVC,您通常使用 StoredProcedure 对象还是将其包装在您的业务逻辑中并返回数据集、列表、集合或其他东西?
数据集仍然是常态还是被其他东西取代了?
使用 SubSonic 时,您是将数据作为数据集返回还是将其放入强类型自定义集合或通用对象中?
我运行了亚音速项目,对于我的数据库中的四个存储过程,它给了我一个 Sps.cs,其中包含 4 个返回一个 StoredProcedure 对象的方法。
如果您使用 MVC,您通常使用 StoredProcedure 对象还是将其包装在您的业务逻辑中并返回数据集、列表、集合或其他东西?
数据集仍然是常态还是被其他东西取代了?
如果存储过程的结果与您的一个表具有相同的架构,您可以使用以下代码(SubSonic 2.1)构建一个集合:
ProductCollection coll = new ProductCollection();
coll.LoadAndCloseReader(SPs.GetProducts(1).GetReader());
ExecuteTypedList<>
在这种情况下是你最好的朋友:
IList<Product> list=SPs.GetProducts().ExecuteTypedList<Product>();
如果我的存储过程从我拥有 SubSonic 对象的一个表中返回所有字段,那么我会对存储过程的结果执行 LoadAndCloseReader。如果我的存储过程返回的数据与 SubSonic 对象不匹配,那么我只需将其作为数据集使用。
也许返回一个数据读取器,然后对其进行迭代以填充一些自定义对象。或者,快速而肮脏的方式(因为您没有使用域驱动设计)在数据库中创建一个与存储过程具有相同结构的视图,然后将结果加载到类似于 John 的代码的 ViewObjectCollection 中。
你可以做数据阅读器,但那是 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)()