【问题标题】:Local database not update after SaveChanges with entity framework使用实体框架进行 SaveChanges 后本地数据库未更新
【发布时间】:2016-05-17 08:24:05
【问题描述】:

我想使用本地数据库 (.mdf) 和实体框架创建一个 winform 应用程序。

我已经创建了数据库和模型。当我执行这段代码时:

using (var context = new testEntity())
{
    CLIENTS c = new CLIENTS();
    c.Name = "name";
    c.Age = 10;
    context.CLIENTS.Add(c);
    context.SaveChanges();
}

在数据库中创建了一个客户端,我可以使用以下代码获取它:

using (var context = new testEntity())
{
    List<CLIENTS> clients = context.CLIENTS.ToList();
    //break point here
}

但关闭程序后添加的客户端不在.mdf文件中。 如果我在 .mdf 文件中添加一些行,我可以显示它们,但不能相反。

如果有人可以帮助我,谢谢

【问题讨论】:

  • 上下文构造函数是什么样的?什么是数据库初始化程序?还有什么被覆盖(SaveChanges、模型构建器、配置)?

标签: c# entity-framework visual-studio local-database


【解决方案1】:

检查 DB 的Copy to Output Directory
将数据库文件的Copy to Output Directory属性更改为Copy if newer.

【讨论】:

  • 它有效,当我执行几次我的程序时,我可以获得最后添加的客户端,但 mdf 文件为空。而我重建程序,数据库被清空...
【解决方案2】:

.mdf 每次重建代码时文件都会丢失更改: 解决方案:将 .mdf 文件保留在其他位置而不是构建文件夹位置,例如CD 驱动器,分别更改连接字符串。也可以参考Pranav's回答。

【讨论】:

  • 我的 mdf 文件在项目位置
【解决方案3】:

查看配置文件 (App.config) 中的连接字符串 当您从数据库生成 .edmx 时,如果您在询问时单击“是”,它将在调试文件夹(如果您在调试时运行)中复制您的数据库。就像说的那样,每次重建时,数据库副本的内容都会被清除。

您必须更改连接字符串以指向您的初始数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2020-05-14
    相关资源
    最近更新 更多