私は Visual Studio 2012 (Web Express) を使用しており、単純な ASP.NET MVC アプリケーションを (Database-First アプローチを使用して) hector espinosa によるこの素晴らしいガイドに従って作成しています。私の問題は、複合主キーを使用するテーブルの場合、足場システムが正しく機能しないことです。
私のテーブルは次のとおりです。
CREATE TABLE [dbo].[Unit](
[UnitOid] [int] NOT NULL,
/*other stuff*/
[ReplicationId] [int] NOT NULL,
CONSTRAINT [PK_Unit] PRIMARY KEY CLUSTERED
(
[UnitOid] ASC,
[ReplicationId] ASC
)
スキャフォールディングはコントローラーとビューを生成しますが、編集または詳細リンクをクリックするとすぐに、使用される唯一の識別子は最初の ( UnitOid
) 値です。
コントローラーでのアクションの例:
public ActionResult Details(int id = 0)
{
Unit unit = db.Units.Find(id); // throws an ArgumentException
if (unit == null)
{
return HttpNotFound();
}
return View(unit);
}
例外メッセージは非常に明確です。
「渡された主キー値の数は、エンティティで定義された主キー値の数と一致する必要があります」
MVC4 / EF5 / VisualStudio 2012 のスキャフォールディング システムは、それをすぐに処理できないのですか?
注: この質問は、この質問とよく似ています。しかし、ツールの現在のバージョンを参照して再質問します。