实体框架不会在SQL Express(MDF)中保留数据

Ala*_*aor 11 c# persistence entity-framework sql-server-express

我正在使用Entity Framework开发一个应用程序并将数据存储在.mdf数据库中.我的代码可以读取数据,显然它也可以保存,但显然只能.它没有得到任何错误,而程序正在运行它就像保存数据一样,我可以保存一个对象,处理上下文,创建一个新的,然后当我搜索我的对象它就在那里!但是当我查询数据库以查看存储的数据时,那里什么都没有.如果我关闭应用程序并再次运行它,则所有数据都将消失.这是我为测试而编写的示例代码:

        using (DatabaseEntities e = new DatabaseEntities())
        {
            for (int i = 0; i < 50; i++)
            {
                User u = new User();
                u.Nome = "User" + i.ToString();
                e.AddToUser(u);
            }
            int c = e.SaveChanges(true);

            List<User> us = e.User.Where<User>(x => x.ID < 50).ToList<User>();

            foreach (User u in us)
                Console.WriteLine("ID: " + u.ID + " Hello from " + u.Nome);

            Console.ReadKey();
        }
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到了50个输出,如果我在调试中查看c变量的内容,有50个变化,每个事情似乎都很好,但是当我启动查询浏览器并查看我的MDF数据库的内容时,那里什么都没有.

可能它很简单,但我看不出它是什么,我需要你的帮助.

Ala*_*aor 15

我刚刚发现了什么问题,我猜其实并没有错.我强制一个错误,然后我可以看到我访问的数据库是在bin目录中,每当我运行应用程序时,Visual Studio都会将我的数据库复制到bin目录,这就是为什么如果我手动添加一些数据我可以看到它,但运行时中的保存不会持久化.我一直在服务器上使用数据库,这是我第一次使用本地数据库,所以我搞砸了,但非常感谢你的帮助!


编辑:提供解决方案

如果要在构建时禁用复制数据库,则必须从解决方案资源管理器中访问Copy to Output Directoy.mdf文件.
只需将其更改为Copy if newerDo not copy.

请注意,访问数据库时存在Copy if newer一些风险..mdf