ストアドプロシージャを含むデータベースがあり、Ado.Net EntityDataModellとAdo.NetDBContextジェネレーターを使用しました。このパートの後、「入門キーがありません」というエラーが発生しました。エンティティセット行の.edmxファイルを変更します:store.schema="dbo"からschema="dbo"に変更し、削除します...。この方法で行の更新は機能しますが、ストアドプロシージャは実行されません。
例:編集が機能した後、次の行を挿入して編集します。
db.SetChangedByUserTrue(id);
だから私のコントローラーは:
[ValidateInput(false)]
[HttpPost]
public ActionResult Edit(int id, ProductResource blog)
{
try
{
using (var db = new OnlineCAT_Maint_TESTEntities())
{
db.Entry(blog).State = System.Data.EntityState.Modified;
db.SaveChanges();
db.SetChangedByUserTrue(id);
return RedirectToAction("Index");
}
}
catch
{
return View();
}
}
私のSP:
ALTER PROCEDURE SetChangedByUserTrue -ここにストアドプロシージャのパラメータを追加します @ProductResourceId int なので 始める --SET NOCOUNT ONが追加され、追加の結果セットが発生しないようになりました。 --SELECTステートメントへの干渉。 NOCOUNTをオンに設定します。 -ここに手順のステートメントを挿入します OnlineCAT_Maint_TEST.dbo.ProductResource set ChangedByUser = 1を更新します。ここで、ProductResourceId = @ProductResourceId 終わり
そしてこれはエラーです:
{"無効なオブジェクト名'OnlineCAT_Maint_TEST.dbo.ProductResource'。"}
2つの問題間の関係?解決策は何ですか?