2

私は 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 のスキャフォールディング システムは、それをすぐに処理できないのですか?

注: この質問は、この質問とよく似ています。しかし、ツールの現在のバージョンを参照して再質問します。

4

1 に答える 1