【发布时间】:2016-03-18 17:26:01
【问题描述】:
我有一个名为 Bookmarks 的数据库表,我更改了表中主键的名称。主要是最初的 id,但我将其更改为 BookmarkId,并且在更新 PK 名称后我似乎无法运行查询。我无法将数据插入到表中。
下面是我的错误的sn-p:
“/”应用程序中的服务器错误。列名“Id”无效。无效的 列名“Id”。说明:期间发生未处理的异常 当前网络请求的执行。请检查堆栈 跟踪以获取有关错误及其起源的更多信息 编码。异常详细信息:System.Data.SqlClient.SqlException: 列名“Id”无效。列名“Id”无效。源错误:
第 40 行:{
第 41 行:db.Bookmarks.Add(bookmark);
第 42 行:db.SaveChanges();
第 43 行:返回 RedirectToAction("Index");
第 44 行:}
第42行出现错误,好像数据无法插入数据库。
这就是我定义数据库的方式:
CREATE TABLE [dbo].[Bookmarks] (
[BookmarkId] INT IDENTITY (1, 1) NOT NULL,
[carparkId] INT NULL,
[date] DATETIME NULL,
[username] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([BookmarkId] ASC),
FOREIGN KEY ([carparkId]) REFERENCES [dbo].[Carparks] ([id])
);
PK 设置为自动递增。
这就是我在控制中实现代码的方式
public ActionResult Create([Bind(Include = "carparkId,date,username")] Bookmark bookmark)
{
if (ModelState.IsValid)
{
db.Bookmarks.Add(bookmark);
db.SaveChanges();
return RedirectToAction("Index");
}
有人知道如何解决这个错误吗?
【问题讨论】:
-
那么,告诉 EF 关键字段是 BookmarkId,而不是 Id。您配置实体框架的工作。错误很明显 - 它尝试使用名为“Id”的字段。
-
更新您的实体模型或代码。
标签: c# asp.net-mvc database azure