为什么我的LINQ INSERTS不能持久存在于SQL Server CE 3.5中?

Sea*_*ugh 3 c# linq visual-studio-2008 sql-server-ce linq-to-sql

我正在使用LINQ to SQL与Sql Server Compact Edition 3.5和VS2008.

我有一个非常简单的表(Tokens),带有uniqueidentifier主键(TokenID)和另外两个可空字段(UsedBy和UsedOn).我试图使用LINQ在表中插入新行,但由于某种原因,它们不会持久化.

这是我的代码:

        var connectionstring = "Data Source=|DataDirectory|\\MyData.sdf";
        MyData db = new MyData(connectionstring) { Log = Console.Out };

        Tokens token = new Tokens { TokenID = Guid.NewGuid() };
        db.Tokens.InsertOnSubmit(token);
        //db.GetChangeSet();
        db.SubmitChanges();

        var tokens = from t in db.Tokens
                     select t;
        foreach (var t in tokens)
        {
            Debug.Print(t.TokenID.ToString());
        }
Run Code Online (Sandbox Code Playgroud)

如果我取消注释db.GetChangeSet(); 我可以看到挂起的插入,当我迭代并将它们打印到调试窗口时,每次都会增加令牌数.但是,如果我在VS中查询表(通过显示表数据)它是空的?查看这样的数据也会"重置"LINQ返回的令牌的原始状态.

我很确定我犯了一些简单的错误,但我看不出来.有任何想法吗?

Tho*_*que 5

检查您的DB文件是否未复制到每个构建的输出目录中(在项目项的属性页中)