LINQ-to-SQL 未将更改提交到本地数据库
我正在创建的应用程序中有一个本地 SQL Server Compact 数据库。我使用 SqlMetal.exe 工具生成了一个可用于 LINQ-to-SQL 目的的 .dbml 文件,该文件运行良好 - 我现在拥有可在我的应用程序中使用的表对象。
不过我有一个奇怪的问题。即使在我的 DataContext 上调用 SubmitChanges() 之后,数据也永远不会提交。但奇怪的是,添加行后,这些行确实出现在数据上下文上的表对象中,但不在表中。让我震惊的是,即使在停止并启动我的应用程序之后,这些行仍然存在于 DataContext 中 - 但几分钟后它们似乎消失了。
我的配置正确吗?使用 SqlMetal 允许 LINQ 提交更改后,我还需要执行其他步骤吗?
I have a local, SQL Server Compact database in an application I am creating. I generated a .dbml file I can use for LINQ-to-SQL purposes using the SqlMetal.exe tool, which worked fine - I now have the table objects for use in my application.
I have a strange issue though. Even after calling SubmitChanges() on my DataContext, the data never commits. But strangely, after adding the rows, these rows do appear in the table object on the datacontext, but not in the table. What shocked me is even after stopping and starting my application, these rows still existed in the DataContext - but after a few minutes they seem to disappear.
Have I configured this correctly? Are there any more steps I need to do after using SqlMetal to allow the LINQ to commit changes?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我假设您使用默认属性链接到 dbml 文件。这意味着,每次启动调试会话时,文件都会被复制到输出目录中,并且仅对该会话进行更改(即“复制 -> 始终”)。
如果您希望更改保留,请右键单击该文件 ->属性->永远不要复制。默认情况下,IDE 假定您不想修改原始数据库,而只想修改用于调试目的的副本。
I am assuming that you linked to the dbml file using the default properties. This means that, each time you start a debug session, the file will be copied into your output directory and changes made to it will only be seen for that session (i.e., "Copy -> Always").
If you want the changes to persist then right click the file -> properties -> Copy Never. By default the IDE assumes that you don't want to modify the original database, only a copy for debugging purposes.