c# - 为什么新创建的 EF 实体在尝试保存时抛出 ID is null 异常?

标签 c# entity-framework visual-studio-2010

我正在试用 VS2010 中包含的 Entity Framework ,但我遇到了从图形界面生成的数据库/模型的问题。

当我这样做时:

user = dataset.UserSet.CreateObject();
user.Id = Guid.NewGuid();
dataset.UserSet.AddObject(user);
dataset.SaveChanges();

{“无法将值 NULL 插入到列‘Id’,表‘BarSoc2.dbo.UserSet’;该列不允许空值。INSERT 失败。\r\n语句已终止。”

我要插入的表格如下所示:

-- Creating table 'UserSet'
CREATE TABLE [dbo].[UserSet] (
    [Id] uniqueidentifier  NOT NULL,
    [Name] nvarchar(max)  NOT NULL,
    [Username] nvarchar(max)  NOT NULL,
    [Password] nvarchar(max)  NOT NULL
);
GO

-- Creating primary key on [Id] in table 'UserSet'
ALTER TABLE [dbo].[UserSet]
ADD CONSTRAINT [PK_UserSet]
    PRIMARY KEY CLUSTERED ([Id] ASC);
GO

我是不是以错误的方式创建了对象,还是做了其他一些基本错误?

最佳答案

在定义为键的字段的模型上,添加以下属性。 此键在数据库中未标记为 IDENTITY,Entity Framework 给出异常

[Key]
[Display(Name = "Id")]     
[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
public int Id { get; set; }

关于c# - 为什么新创建的 EF 实体在尝试保存时抛出 ID is null 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838832/

相关文章:

c# - 没有接口(interface)和抽象的存储库 = 畸变?

c# - 为代码覆盖关闭 Visual Studio 2010 中的 Lambda 表达式

c# - 尝试让对话框窗口记住它的最后位置

c# - 检查是否没有返回数据行

c# - 查询数据库出错

c# - Lambda表达式问题

c# - 如何扩展谓词以外的调用表达式?

entity-framework - Orchard CMS 是否支持带有 Entity Framework 的 MVC4

visual-studio-2010 - Visual Studio 2010 在打开时崩溃!我开始讨厌一切!

c# - visual studio 2010 c# winforms运行时编译