【发布时间】:2020-05-06 14:54:15
【问题描述】:
我在 C# 中有具有 Id 列的实体。这是主键。但我不把它作为身份列。我想在我的 C# 代码中为 Id 列赋值。 实体:
public class MasterReview
{
public int Id { get; set; }
在数据库中,我有列 ID,身份规范设置为否。 在 C# 中,当我添加新实体时,我将值设置为 Id:
public void Add(int reviewId, string title, string language, string assignee)
{
using (var uow = unitOfWorkFactory.CreateUnitOfWork())
{
uow.MasterReviewRepository.Add(new Models.MasterReview()
{
Id = reviewId,
Title = title,
Language = language,
Assignee = assignee
});
uow.Save();
}
}
当我打电话给uow.Save 我得到错误:
无法将值 NULL 插入到列“Id”、表“MyApp.dbo.MasterReview”中;列不允许空值。插入失败。
值已设置,不为空。现在是 3。
【问题讨论】:
-
如果您对
Id = 3之类的内容进行硬编码,它是否会按预期值保存?想尝试找出故障点。 -
您是否尝试打开 SQL Profiler 来查看作为插入查询生成的内容?
-
我更喜欢使用字符串作为 Id,然后使用盐创建 GUID。检查您的表格 ID 是什么数据类型。
-
我添加了一个截图。如您所见,Id 设置为 4,但仍然出现错误
标签: c# entity-framework