首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DbContext SaveChanges

DbContext SaveChanges
EN

Stack Overflow用户
提问于 2015-03-30 19:17:56
回答 1查看 463关注 0票数 1

我对C#比较陌生,对WPF非常陌生。我一直试图把我的头脑围绕着MVVM的概念,现在我已经把ADO实体抛到了一起。

我的示例应用程序的目的是跟踪CAD项目。我正在从数据库中提取项目并成功地填充我的视图;太棒了。我在手工中添加了信息,以测试视图是否正常工作。

现在,我的应用程序试图通过我从ICommand启动的函数添加一个新项。据我所知,我正在创建一个新的DBContext对象,向它添加一个项并保存我的更改。成功地执行"SaveChanges()“可以告诉我1行已经被更新了,但是当我检查时,数据不存在吗?此外,如果我再次调用SaveChanges() (在同一个调试会话中),它会抛出一个错误来指示存在多个条目。同样,当通过“显示表数据”查看数据时,我什么也没看到。

代码语言:javascript
复制
    public void AddNewItem(object parameter)
    {
        using (var dbq = new DBEntities()) {
            var tempItem = dbq.OutstandingCAD.Create();
            tempItem.Id = 2;
            dbq.OutstandingCAD.Add(tempItem);
            dbq.SaveChanges();
        }

    }

请有人看看那小块代码,并建议我所做的是否正确,我的问题是否在其他地方?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-30 19:45:21

您的问题不在于代码,而在于您试图评估工作的方式。

有一篇微软的文章这里讨论了您正在经历的情况。它引用了Visual 2005,但仍然相关。

基本上,您的数据库是一个存储在项目中的.mdf文件。您的SQL连接字符串类似于AttachDbFileName=|DataDirectory|\data.mdf"

使用本地数据库文件时要知道的一件事是,它们被视为任何其他内容文件。对于桌面项目,这意味着默认情况下,每次生成项目时,数据库文件将被复制到输出文件夹(又名bin)。在F5之后,下面是磁盘上的样子 MyProject\Data.mdf MyProject\MyApp.vb MyProject\Bin\Debug\Data.mdf MyProject\Bin\Debug\MyApp.exe 在设计时,数据工具使用MyProject\Data.mdf .在运行时,应用程序将使用输出文件夹下的数据库。由于拷贝的结果,很多人认为应用程序没有将数据保存到数据库文件中。事实上,这只是因为所涉及的数据文件有两个副本。在通过数据库资源管理器查看架构/数据时也是如此。这些工具使用的是项目中的副本,而不是bin文件夹中的副本。

实际上,您有两个数据库副本,一个用于设计时,一个用于运行时。您正在查看设计时数据库,而没有看到对运行时数据库所做的更改。但是,每次运行项目时,运行时数据库都会被覆盖,这样您的更改就会消失。这实际上是一个调试特性,可以防止数据库中有数百行代码来自同一特性的多个测试。但是,有些人更喜欢这种持久性,并且会使用外部SQL实例而不是包含.mdf的项目。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29354422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档