2

SubSonic を使用する場合、データをデータセットとして返しますか、それとも厳密に型指定されたカスタム コレクションまたは汎用オブジェクトに入れますか?

subsonic プロジェクトを実行したところ、DB にある 4 つのストアド プロシージャに対して、StoredProcedure オブジェクトを返す 4 つのメソッドを含む Sps.cs が得られました。

MVC を使用した場合、通常は StoredProcedure オブジェクトを使用しますか、それともビジネス ロジックをラップして、データセット、リスト、コレクションなどを返しますか?

データセットはまだ標準ですか、それとも別のものに置き換えられていますか?

4

5 に答える 5

5

ストアド プロシージャの結果がテーブルの 1 つと同じスキーマを持つ場合、次のコード (SubSonic 2.1) を使用してコレクションを構築できます。

ProductCollection coll = new ProductCollection();
coll.LoadAndCloseReader(SPs.GetProducts(1).GetReader());
于 2008-10-23T01:27:44.557 に答える
3

ExecuteTypedList<> is your best friend in this case:

IList<Product> list=SPs.GetProducts().ExecuteTypedList<Product>();
于 2009-04-04T19:03:22.003 に答える
2

ストアド プロシージャが、SubSonic オブジェクトがあるテーブルの 1 つからすべてのフィールドを返す場合、ストアド プロシージャの結果に対して LoadAndCloseReader を実行します。ストアド プロシージャが SubSonic オブジェクトと一致しないデータを返した場合、それをデータセットとして処理します。

于 2008-10-23T01:30:24.253 に答える
1

おそらく、データリーダーを返し、それを繰り返していくつかのカスタムオブジェクトを設定します。または、(ドメイン駆動設計を使用していないため)すばやく汚い方法で、ストアドプロシージャと同じ構造でDBにビューを作成し、Johnのコードと同様に結果をViewObjectCollectionにロードします。

于 2008-12-09T01:46:11.800 に答える
0

データ リーダーを実行できますが、それは 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)()
于 2009-04-04T10:45:17.443 に答える