I'm following Steve Sanderson's example from this ASP.NET MVC bookダイアグラムツールを使用してモデルを作成するのではなく、手作業でモデルを作成します。だから私のモデルの名前空間で、私はそれのこの部分は、すべての罰金ですそれIMultipleResultsカスタムモデルとリポジトリを使用する
[Table(Name="tblCC_Business")]
public class Business
{
[Column(IsPrimaryKey=true, IsDbGenerated=false)]
public string BusinessID { get; set; }
// this is done because Business column and Business have interfering names
[Column(Name="Business")] public string BusinessCol { get; set; }
}
で、次のようなものでMySystemModel
というクラスを配置します。しかし、問題はストアド・プロシージャから複数の結果セットを戻すことですが、SQLをLINQモデリングと混合して照合します。これは、LINQ to SQLの変換がクエリの一部では遅すぎるためです(実際にこの点について主張する点はありません。ビジネス要件です)。だから、基本的に私はそうのように、私の「リポジトリ」で私のLINQモデルと一緒に実際のSQLステートメントを使用します。
public IEnumerable<MyType> ListData(int? arg)
{
string query = "SELECT * FROM MyTable WHERE argument = {0}";
return _dc.ExecuteQuery<MyType>(query, arg);
//c.GetTable<MyType>(); <-- this is another way of getting all data out quickly
}
今私がいる問題は、私はDataContextのを延長していないよと同様に、複数の結果セットを返す方法ですso:
public ContractsControlRepository()
{
_dc = new DataContext(ConfigurationManager.ConnectionStrings["MyConnectionString"].ToString());
}
This linkは、ストアドプロシージャから複数の結果セットが返される方法を示します。
[Function(Name="dbo.VariableResultShapes")]
[ResultType(typeof(VariableResultShapesResult1))]
[ResultType(typeof(VariableResultShapesResult2))]
public IMultipleResults VariableResultShapes([Parameter(DbType="Int")] System.Nullable<int> shape)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), shape);
return ((IMultipleResults)(result.ReturnValue));
}
これを私のリポジトリで使用できるものにするにはどうすればよいですか?私は、DataContextを含むリポジトリから複数の結果セットを返すことができるだけで、それを拡張する必要はありません。以前の抽出結果をコピーしてリポジトリに貼り付けた場合、ExecuteMethodCall
は利用できませんが、DataContext
の場合にのみ利用可能です。
リソース