ストアドプロシージャを含むデータベースがあり、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つの問題間の関係?解決策は何ですか?