Stored procedures 亚音速和存储过程

Stored procedures 亚音速和存储过程,stored-procedures,subsonic,Stored Procedures,Subsonic,使用亚音速时,是将数据作为数据集返回,还是将其放入强类型自定义集合或泛型对象中 我运行了亚音速项目,对于我数据库中的四个存储过程,它给了我一个Sps.cs,其中有4个方法返回一个StoredProcedure对象 如果使用MVC,您通常使用StoredProcedure对象还是围绕业务逻辑使用它,并返回数据集、列表、集合或其他内容 数据集仍然是规范还是被其他东西所取代?如果存储过程的结果与您的一个表具有相同的架构,您可以使用以下代码构建集合(SubSonic 2.1): 如果我的存储过程返回其中

使用亚音速时,是将数据作为数据集返回,还是将其放入强类型自定义集合或泛型对象中

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

如果使用MVC,您通常使用StoredProcedure对象还是围绕业务逻辑使用它,并返回数据集、列表、集合或其他内容


数据集仍然是规范还是被其他东西所取代?

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


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

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

您可以进行数据读取器,但就是这样。返回对象是亚音速的微风,比数据读取器更容易使用。您可以这样检索对象:

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)()
ExecuteTypedList
在这种情况下是您最好的朋友:

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

它很像link2sql。它“可能”并不容易,但更容易阅读,而且是强类型的。这里的顶部答案在亚音速3中不起作用,上面的答案起作用。仅供参考。
IList<Product> list=SPs.GetProducts().ExecuteTypedList<Product>();