如何使用ASP.NET MVC4 / EF5脚手架与复合主键



我使用Visual Studio 2012 (Web Express),我正在创建一个简单的ASP。. NET MVC应用程序,(使用数据库优先的方法)通过遵循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的脚手架系统真的无法处理开箱即用吗?

注意:这个问题与这个问题非常相似。但是,我在重新询问时参考了工具的当前版本

由于您有一个组合键,因此需要同时提供两个值。注意,Find接受参数属性,因此您可以只执行db.Units.Find(id, id2)。如果您只有键的一部分,您将需要查询数据库并期望得到多个结果,因为数据库中可能有许多实体,您提供的键的一部分是相同的。

相关内容

  • 没有找到相关文章

最新更新