MVCフレームワークのストアドプロシージャを使用したEntityフレームワークの優れたチュートリアルはどこで入手できますか?
この場合、ほとんどすべてがストアドプロシージャに記述されているので、エンタープライズライブラリを使用する方がよいでしょうか。
注:ストアドプロシージャを使用しているのは、それらが非常に複雑で、1000行を超えるものもあるためです。
この場合、MVCはまったく関係ありません。 EFからストアドプロシージャを呼び出す方法は同じです。エンティティやlinq-to-entities(EFの主な機能)を実際に使用せずに、ストアドプロシージャを使用したいと思いませんか?一般的に必要なもの:
ObjectContext
とすべてのエンティティも生成します。ObjectContext
にメソッドを作成します。これにより、他の.netメソッドと同じようにストアドプロシージャを呼び出すことができます。また、関数のインポートを使用する必要はまったくありません。 プロシージャを直接実行できます 次のいずれかを呼び出します。
objectContext.ExecuteSqlCommand("storedProcedureName", SqlParameters)
SPがレコードセットを返さない場合objectContext.ExecuteStoreQuery<ResultType>("storedProcedureName", SqlParameters)
。 ResultType
には、結果セットの列と同じ名前のプロパティが必要です。フラットタイプでのみ機能します(ネストされたオブジェクトはありません)。ストアドプロシージャを使用する場合、いくつかの制限があります。
Entity Frameworkコードファーストを使用している場合、この方法でストアドプロシージャを使用できます。この例では、4つの入力パラメーターがあります。
var startDateTY = masterSales.PolicyStartDate;
var endateTY = masterSales.PolicyEndDate;
var startDatePY = masterSales.PolicyStartDate.Value.AddYears(-1);
var endatePY = masterSales.PolicyEndDate.Value.AddYears(-1);
var spParameters = new object[4];
spParameters[0] = new SqlParameter()
{
ParameterName = "startDateTY",
Value = startDateTY
};
spParameters[1] = new SqlParameter()
{
ParameterName = "endateTY",
Value = endateTY
};
spParameters[2] = new SqlParameter()
{
ParameterName = "startDatePY",
Value = startDatePY
};
spParameters[3] = new SqlParameter()
{
ParameterName = "endatePY",
Value = endatePY
};
var datalist = objContext.Database.SqlQuery<vMasterSalesAgentReport>("dbo.usp_GetSalesAgentReport @startDateTY,@endateTY,@startDatePY,@endatePY", spParameters).ToList();
store = "sp_selectmark @regid='" + id + "'";
var st = db.ExecuteStoreQuery<Sp>("exec " + store).ToList();
GridView1.DataSource = st;
GridView1.DataBind();
string store = "";
store = "sp_inserttbreg @name='" + regobj.name + "',@age='" + regobj.age + "',@place='" + regobj.place + "',@gender='" + regobj.gender + "',@email='" + regobj.email + "',@fon='" + regobj.fon + "'";