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

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

当我尝试将一些示例数据插入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();
         }

我哪里出错了?

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

我通过添加
标识(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...
}