C# 该列不能包含空值。SqlCE异常
当我尝试将一些示例数据插入WP7应用程序内的SQL Server CE 3.5数据库时,出现以下异常: 错误:SqlCeException“该列不能包含空值。C# 该列不能包含空值。SqlCE异常,c#,linq,windows-phone-7,sql-server-ce,C#,Linq,Windows Phone 7,Sql Server Ce,当我尝试将一些示例数据插入WP7应用程序内的SQL Server CE 3.5数据库时,出现以下异常: 错误:SqlCeException“该列不能包含空值。 [列名=名称,表名=检查] name也是主键。我想我已经在DataContext中正确地声明了所有内容 private void InsertData() { mangoDb = new ExamDataContext(); // create a new
[列名=名称,表名=检查]
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();
}
我哪里出错了?我通过删除表的索引解决了这个问题。不确定为什么它会起作用,但它确实起作用,以防其他人遇到这个问题。我通过添加
标识(1,1)
修改id
字段声明解决了这样的问题,因此我的id声明变成:
[id] int NOT NULL IDENTITY (1,1)
在我当前使用.NetCore、SqlCE DB和Dapper ORM的项目中,我和我的同事遇到了相同的问题。 我们的Id列不是表中的标识列。 甚至无法更改列 几个小时后,我们发现,表示主键列的模型类属性必须用以下注释[key],[Required]修饰 例:
确保列
exam.Name
正确映射到exam
表中的列Name
。检查数据库映射是否使用linq到sql或实体框架。DataContext中的当前代码如下:[table]公共类检查{private string name;//局部变量[Column(DbType=“NVARCHAR(100)”,IsPrimaryKey=true)]公共字符串名称//列名{get{return name;}集{if(name!=value){name=value;}}我想我已经将它正确地映射到了检查表。我想我正在使用linq to sql,因为WP7还没有EF。谢谢!Stackoverflow新手
public class Exam
{
[Key]
[Required]
public string Name { get; set; }
// Other properties...
}