c# - 为什么我的 LINQ 插入在 SQL Server CE 3.5 中不持久?

标签 c# visual-studio-2008 linq linq-to-sql sql-server-ce

我在 Sql Server Compact Edition 3.5 和 VS2008 中使用 LINQ to SQL。

我有一个非常简单的表 (Tokens),其中包含一个唯一标识符主键 (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());
        }

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

我很确定我犯了一些简单的错误,但我看不到它。有什么想法吗?

最佳答案

检查您的数据库文件是否在每次构建时都没有复制到输出目录(在项目项的属性页中)

关于c# - 为什么我的 LINQ 插入在 SQL Server CE 3.5 中不持久?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1343816/

相关文章:

c# - .NET WinForm GC 问题

c# - 强制通用参数的类型是接口(interface)而不是特定类

c++ - VC++ 2008 中 stdio.h 的编译错误

c++ - Visual Studio 中的 fstream 指针问题

c# - 集合被修改;枚举操作可能不会在 Except 操作上执行

c# - 在点击的 TextBox 上实现 DatePicker/DatePickerFlyout

c# - 字符串到 DateTime dd/mm/yy 错误

c# - 为视频生成缩略图

c# - 连接项目列表中的属性

c# - Linq 包括集合中的子项