该列不能包含空值。 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 异常的主要内容,如果未能解决你的问题,请参考以下文章