问题标签 [dbcontext]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
entity-framework-4 - 如何在多个 DbContext 类中只强制一个事务?
背景:
从 SO 的另一个问题来看,我有一个 Winforms 解决方案(财务),其中包含许多项目(解决方案的固定项目)。现在,我的一位客户要求我“升级”解决方案并添加来自另一个 Winforms 解决方案 (HR) 的项目/模块。
我真的不想将这些项目作为现有财务解决方案的固定项目。为此,我正在尝试创建所有使用 MEF 加载 GUI、业务逻辑和数据层的插件。
问题:
我有一个带有外部上下文列表的上下文(为实现通用存储库模式而构建的 DbContext)(使用 MEF 加载 - 这些上下文代表来自每个插件的上下文,也具有通用存储库模式)。
假设我有这个:
和
在已经加载的 MainContext 类中,我有两个外部上下文(来自插件)。
考虑到这一点,假设我有一个会影响MainContext和 PluginContext_B 的事务。
如何在一个事务中对两个上下文执行更新/插入/删除(工作统一)?
使用 IUnityOfWork,我可以为最后一项设置 SaveChanges(),但据我所知,我必须有一个上下文才能将其作为单个事务工作。
有一种使用 MSDTC (TransactionScope) 的方法,但这种方法很糟糕,我根本不打算使用它(也因为我需要在客户端和服务器上启用 MSDTC,而且我一直都有崩溃和泄漏)。
更新:
系统正在使用 SQL 2008 R2。永远不要吼叫。
如果可以以无法扩展到 MSDTC 的方式使用 TransactionScope,那很好,但我从未实现过。我一直使用 TransactionScope 它进入 MSDTC。根据 SO 上的另一篇文章,在某些情况下 TS 不会进入 MSDTC:请查看此处。但我真的更喜欢采用其他方式而不是 TransactionScope ...
visual-studio - 如何在 Visual Studio 11 中找到 dbcontext 模板
我正在使用数据库优先方法来创建具有实体框架的模型。在VS2010中生成模型后我总是选择不同的代码生成模板(右键单击图表“添加新代码生成项”)然后,在对话框中选择“DbContext Generator”。这将指示 VS 生成 POCO 类,而不是非常复杂的标准类。当我尝试在 Visual Studio 11 Developer Preview 中执行相同操作时,我在对话框中找不到模板“DbContext Generator”。如何将 dbcontext 模板添加到 Visual Studio 11 开发人员预览版?我看到我可以使用 nuget,但我在搜索时找不到它。
database - 实体框架更改数据库类型而不重新编译 SqlCompact
我想更改实体框架连接的数据库。在相同的数据库类型中,一切正常,我只需要更改连接字符串。
但是在 SqlCompact 和 SqlServer 之间进行更改时,这将不起作用,因为 Schema 文件存在差异。
目前我有一个带有 EDMX 文件的项目,一个带有 DbContext 和 DBSet(包括生成的实体)以及多个使用 DBContext 和 DbSet 连接到数据库的程序集。
无需重新编译即可使数据库(以及包括 Schemas 的 dbType)可互换的最佳方法是什么?
entity-framework - 从 WSDL 生成实体框架类
早上好,
我正在接替一直使用实体框架与数据库通信的人。这似乎是如何完成的,因为有一个 WSDL 描述了我们在 Enterprise Architect 中创建的所有使用的对象。然后将其作为服务引用导入 Visual Studio。
我对此有点困惑,所以想知道这是否是一种明智的方法。WSDL 有一个示例端口、绑定和服务,在代码中似乎根本没有使用。这些是否存在以便正确导入 WSDL?
我在 Google 上查看并没有看到任何人以这种方式从 WSDL 创建的示例,因此不确定这是一种常见的方法。
因此,完成此操作后,您将数据表示为类。然后,您似乎将它们添加到从 a 继承的类中,该类DbContext
在数据库中创建表。它是否正确?
c# - 参考仍然为空
我想我遇到了一个错误,似乎 EF 在删除和重新插入实体后没有很好地处理引用。我已经设法用下面的代码重现了它(假设所有断言都通过了,除了我在评论中谈到的那个):
谁能告诉我这里发生了什么?
编辑:我的实体首先使用数据库生成,我使用 DbContext/POCO 生成器生成。
.net - 在创建和部署数据库后更改实体框架使用的类
假设我们有一个 ASP.NET MVC3 网站,它使用 Entity Framework Code First 方法来处理数据库。
该系统现在正在测试环境中工作。
如果 DbContext 的部分如下:
例如,如果我将 Properties 添加到 Incident 类,它会导致 DB-Code 协作问题吗?
或者框架是否会自动更新数据库表,并将在没有新属性的情况下创建的旧记录视为空?
c# - 如何在不丢失数据的情况下将表(更改数据模型)添加到 EF4 上下文
我有一个使用 Code First 范例创建的 MVC3 项目,它可以工作。我创建了一个从 DBContext 继承的模型,我可以写入表等等。我需要添加新表并更改我的模型并且我使用 DropCreateDatabaseIfModelChanges<T>
但是,我丢失了所有数据,因为 EF4 将放弃创建新数据库。
我可以使用不同的界面(UpdateDatabaseIfModelChanges<T>
如果有的话)吗?
我的模型如下所示:
然后我打电话:
这是我想要创建的:
entity-framework-4 - DbContext/ObjectDataSource 更新问题
我有一个ObjectDataSource
调用业务层方法来更新 EF 并保存。我有这个奇怪的问题。以下是 ODS 标记:
以下是 BLL 和 repositoryCode: BLL:
存储库:
当此代码运行时,我得到一个异常:
不能为“设备”类型的实体调用成员“当前值”,因为该实体在上下文中不存在。要将实体添加到上下文中,请调用 DbSet 的 Add 或 Attach 方法。
但是,如果我执行 dbset.attach,那么我会得到实体已经存在的异常。
我不知道我能做什么,对我来说似乎是一个循环问题。我已经秃了半秃了。请帮忙。
database - 跨控制器和操作重用在 Spring.Net 中创建的 DbContext 对象
什么是更好的?或者也许 - 以下是一个好习惯吗?我使用 Spring.net 创建 DbContext 的实例,然后将其注入每个控制器以用于操作。该对象是一个单例。有时我会收到一个异常,说“ObjectContext 实例已被释放..”我怀疑这可能是原因,但是这是不可重复的,到目前为止,我的应用程序仅在开发过程中被我使用。
现在,在每个控制器类中创建一个 DbContext 并在其操作中重用会更好吗?或者可能在每个动作本身中创建 DbContext 对象;或者只是在 Spring 配置中将其设置为不是单例,因此每次访问时都会创建它?
c# - DbContext.SaveChanges(); 不给出错误但不将实体添加到数据库
我正在尝试使用以下代码将实体保存到我的数据库中:
我进行了测试,如果出现问题(例如,实体的字段为空,在数据库中不能为空),它会给出错误。我填写了所有必要的字段并调用了此代码。它没有给出错误。但是,该实体也没有添加到数据库中。我怎样才能找到 DbContext.SaveChanges(); 在没有错误信息的情况下出错?
下面是调用 Add() 函数的代码。