【发布时间】:2016-08-23 17:41:04
【问题描述】:
我在基于服务的数据库中有一个名为 Category 的非常基本的表,如下所示:
CategoryID:主键、身份
CategoryName:只是一个 nvarchar(max) 列
我在项目中添加了一个 LINQ To SQL 类,并在表单的构造函数之前对其进行了初始化:
DataClasses1DataContext dc = new DataClasses1DataContext();
现在我只想做一些简单的事情:在 Category 表中添加一个新行。 我试过这个:
var c = new Category()
{
CategoryName = "test"
};
dc.Categories.InsertOnSubmit(c);
dc.SubmitChanges();
我已经尝试过使用 CategoryID = 4 和没有它(4 将是下一个可用的 ID)。
我还设置了数据库的复制到输出目录属性,如果更新则复制。
我什至尝试从 CategoryID 中删除标识(尽管这不应该是一个好的解决方案),但后来我遇到了一个异常,即 CategoryID 不应该为空(即使我将其设置为 4)。
(我没有使用实体框架)。
【问题讨论】:
-
CategoryID 是否设置为主键并在您的数据库中设置为自动递增?你有错误吗?如果有请提供。如果您没有收到错误,您可以将 db.SubmitChanges 放入 try catch...
-
尝试 dc.Categories.Add(c); dc.SaveChanges();
-
你能粘贴EF生成的Category类吗?我想它不携带来自数据库的身份信息
-
我没有使用实体框架,所以 .Add(c) 无法完成。我现在没有收到任何错误,但新行没有出现。 CategoryID 确实是一个主键,并设置为自动递增一。