该列不能包含空值。 SqlCE 异常

Posted

技术标签:

【中文标题】该列不能包含空值。 SqlCE 异常【英文标题】:The column cannot contain null values. SqlCE exception 【发布时间】:2012-09-20 11:19:52 【问题描述】:

当我尝试将一些示例数据插入 WP7 应用程序内的 SQL Server CE 3.5 数据库时,出现以下异常:

错误:SqlCeException“列不能包含空值。 [列名=名称,表名=考试]

name 也是主键。我想我已经在DataContext 中正确声明了所有内容。

        private void InsertData()
        
            mangoDb = new ExamDataContext();

            // create a new exam instance
            Exam exam = new Exam();
            exam.Name = "History";
            exam.Description ="History Exam";
            // add the new exam to the context
            mangoDb.Exams.InsertOnSubmit(exam);
            // save changes to the database
            mangoDb.SubmitChanges();
         

我哪里出错了?

【问题讨论】:

确保exam.Name 列正确映射到Exam 表中的Name 列。无论您使用的是 linq-to-sql 还是实体框架,请检查您的数据库映射 我当前在DataContext中的代码如下: [Table] public class Exam private string name; // 局部变量 [Column(DbType = "NVARCHAR(100)", IsPrimaryKey = true)] public string Name // 列名 get return name; set if (name != value) name = value; 我想我已经将它正确地映射到了考试表。我想我正在使用 linq-to-sql,因为 WP7 还没有 EF。 【参考方案1】:

我通过添加IDENTITY (1,1) 解决了修改id 字段声明这样的问题,因此我的id 声明变为:

[id] int NOT NULL  IDENTITY (1,1)

【讨论】:

【参考方案2】:

在我当前使用 .NetCore、SqlCE DB 和 Dapper ORM 的项目中,我和我的同事遇到了同样的问题。 我们的 Id 列不是表中的标识列。 甚至无法更改列

几个小时后我们发现,表示主键列的模型类属性必须用以下注释[Key],[Required]修饰。

例如:

public class Exam

    [Key]
    [Required]
    public string Name  get; set; 

    // Other properties...

【讨论】:

【参考方案3】:

我通过删除表格的索引解决了这个问题。不知道为什么它会起作用,但它肯定会起作用,以防其他人遇到这个问题。

【讨论】:

谢谢! *** 新手

以上是关于该列不能包含空值。 SqlCE 异常的主要内容,如果未能解决你的问题,请参考以下文章

将实体框架与 SQLCE 一起使用时出现奇怪的异常

Excel透视表基础之数据源创建基本术语基本操作

实体框架包含/包含 SQLCE 子句

sql优化

sql优化

FluentAssertions Should.Equal 在集合上,包含空值