【发布时间】:2021-01-25 23:25:00
【问题描述】:
我正在尝试用 C# 创建一本食谱书,我可以在其中轻松搜索我可以使用手头的哪些成分制作的食谱。在这一点上,这对我来说主要是一个学习练习。
现在,我正在尝试更新我的数据库中的表。它似乎在代码的一个实例中起作用,但是在我下次运行它时更改就消失了。
所以我的数据库中有一个这样的表:
我从一个 json 文件创建了一个示例食谱的小列表
var js = new JsonImporter() { SourceDirectory = Path.Combine(Directory.GetCurrentDirectory(), "test_data") };
List<Recipe> recipes = js.ImportData<Recipe>("test_recipes.json");
连接到我的表并 InsertAllOnSubmit:
DataContext db = new DataContext(connectionString);
Table<Recipe> db_recipes = db.GetTable<Recipe>();
db_recipes.InsertAllOnSubmit(recipes);
显示表格中有多少条目,提交更改,刷新条目数量,再次显示表格中有多少:
MessageBox.Show(db_recipes.Count().ToString());
db.SubmitChanges();
db_recipes = db.GetTable<Recipe>();
MessageBox.Show(db_recipes.Count().ToString());
第一个消息框显示 1(我在表中有一行是通过服务器资源管理器手动输入的),第二个消息显示 3。这是我所期望的,因为我要添加 2 个条目。
但是,一旦我再次运行代码,消息框再次显示 1 和 3,而不是始终递增 2。所以在我看来,数据库没有保存。谁能帮我弄清楚这里发生了什么?
【问题讨论】:
-
您是否在重新运行代码之前检查了数据库本身(使用数据库客户端,而不是您的 C# 应用程序)是否正确更新?如果数据库在此阶段显示更新并在您重新运行 C# 应用程序时丢失它们,您可能会丢失数据库提交。仅供参考:包括您正在使用的数据库,例如 Sql Server。 MySql、Postgres 等和版本号。
-
是的,我确实检查过,并且数据库在执行期间没有更新。谢谢!老实说,我再也找不到我用来创建数据库的指南了。我认为它是MS-SQL。当我在 SQL Server 对象资源管理器中查找它时,它被称为 (localdb)\MSSQLLocalDB (SQL Server 13.0.4001 - {username})。我还不确定这意味着什么。
标签: c# linq linq-to-sql