0

我对实体框架相当陌生,并且正在构建我的第一个 MVC 应用程序。我正在为一个简单的实体实现一个创建视图,但是,我遇到了(SQL Express 2005)标识列主键的问题。据我了解,框架应该处理 Identity 列并让 SQL 数据库生成 ID 值。

当我尝试使用创建视图保存而不设置 ID 值时,我收到“需要值”错误。如果我为 ID 指定任何值,它会使用数据库中的 Identity 值保存回数据库 - 即。而不是我指定的值,所以一旦 T-SQL 到达那么远,显然是正确生成的。

Identity 属性在数据库中的 ID 列上设置,StoreGeneratedPattern 在模型中设置为“Identity”(见下文):-

属性名称="ID" Type="int" Nullable="false" StoreGeneratedPattern="Identity"

我错过了什么吗?如何告诉模型此列不需要值?

4

4 回答 4

1

谜团已揭开。看来问题是我的命名约定始终使用“ID”作为 ID 列的列名的结果。

当我打电话时

http://.../空缺/创建

路由引擎将其作为

行动=创造;编号 = ""

来自 MapRoute "{controller}/{action}/{id}"

将模型中的标识列名称更改为“VacancyID”,瞧,一切正常。

于 2009-05-01T15:55:50.923 回答
0

我会创建一个自定义路线,这就是它们的用途......

于 2009-05-01T22:28:15.287 回答
0

您没有说“需要值”错误来自何处。客户端模型中的整数值将默认为零,因此总会有一个值。没有看到堆栈,我的猜测是错误来自其他地方。当你看到错误时查看堆栈,并找出你的应用程序的哪个部分正在提升它。

于 2009-05-01T14:06:06.070 回答
0

如果您不想更改数据库架构,可以添加不带 id 参数的路由规则

routes.MapRoute(
   "Create",
   "{controller}/Create",
    new { action = "Create" }
);
于 2009-12-29T16:43:08.170 回答