问题标签 [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.
asp.net - ASP.NET MVC 3 EF CodeFirst - DBContext 项目编辑
我已经为此感到沮丧了一天......请帮忙。
我有一个发票部分,我可以在其中通过使用 JQuery 附加/删除 DOM 元素来动态添加新项目......我已经想出了如何正确命名这些元素,以便它们因此正确地映射到模型并发送到动作参数。
因此,假设我的控制器中有一个名为 Edit 的操作,其参数类型为 Invoice
invoice 参数包含我想要的所有数据。我对此没有问题。下面是对象模型。
请注意InvoiceItems集合 - 它包含动态插入的发票项目的集合。下面是 InvoiceItem 模型
这就是我卡住的地方。
我无法将 Invoice 集合 InvoiceItems 中的项目插入/更新到数据库中。我一直在谷歌搜索,我找到了这些解决方案 - 不幸的是,这些都不起作用。
解决方案 #1 - 一些带有 SetValues 的奇怪代码:
解决方案 #2 - 向我的 DbContext 添加新的更新方法:
解决方案 #3 - 根据http://blogs.msdn.com/b/adonet/archive/2011/01/29/using-dbcontext-in-ef-feature-ctp5-part将现有但已修改的实体附加到上下文-4-add-attach-and-entity-states.aspx
解决方案 #1 的工作原理:更新除新添加的 InvoiceItems 之外的所有属性。SetValues() 忽略 ICollection 属性。如果我在 db.SaveChanges(); 之前添加这一行,这将起作用。
...但我根本不相信这是正确的方法。
解决方案 #2 的工作原理:根本不起作用,因为 DbContext 类中没有 ObjectContext 属性。
解决方案 #3 的工作原理:此解决方案将更新发票,但忽略 InvoiceItems。
附加信息:以下是用于生成映射到 InvoiceItem 属性的项目元素的一段 javascript。
最后一个问题:我做错了什么?将与另一个模型相关的新项目集合自动插入数据库有什么问题?当父模型成功更新时,为什么会被忽略?
编辑1:更正
entity-framework-4.1 - 在 StructureMap 中为控制台应用程序设置 DbContext 的最佳做法是什么?
我使用 StructureMap,EF 4.1/POCO。控制台应用程序假设对一组数据运行 2 个后续操作,比如说 operation1 和 operation2。我将 DbContext 设置为单例。这会导致 operation2 出现问题,因为 operation1 在其 DbContext 中留下了一些垃圾,从而阻止 operation2 正常工作。同时,我无法将 DbContext 设置为“每次调用”,因为操作 1 使用 2 个存储库共享通过其构造函数的相同 DbContext。所以理想情况下,我需要在 operation2 之前重新初始化/重置/清理 DbContext。有任何想法吗?
谢谢
unicode - Entity Framework 4.1 中 DbContext 的 Unicode 表名问题
我以为我会在 EF 4.1 中尝试新的 DbContext 做事方式,但遇到了问题。
我从数据库(SQL Server 2008)生成一个新的实体数据模型,然后使用 DbContext 生成器。
当我尝试获取名为 Länder 的表时,我得到了一个异常。
EntitySqlException:简单标识符“Länder”必须仅包含基本拉丁字符。要使用 UNICODE 字符,请使用转义标识符。
如果尝试其他带有拉丁名称的表 - 一切都很好。而且我在使用 ObjectContext 时没有这个问题。
我应该如何转义表名?
c#-4.0 - 使用 IQueryable而是 DbSet问题
我偶然发现了下一个问题......我有数据库上下文:
我尝试获取 ProviderHardwares 表中不存在的所有硬件:
如果我严格使用 PrimaryDbContext,例如“PrimaryDbContext db = new PrimaryDbContext();” 一切正常。但是如果我隐式使用它“IDbContext db = new PrimaryDbContext();” 我得到一个例外:
无法创建“ConfiguratorMvcApplication.DomainModels.ProviderHardware”类型的常量值。此上下文仅支持原始类型(“例如 Int32、String 和 Guid”)。
总结一下,我无法替换 IQueryable 上的 DbSet。在这种情况下我如何使用单元测试?我希望有人已经解决了这个问题......非常感谢!
entity-framework-4 - 实体框架 - OnModelCreating with Model First
我有一个使用文本模板设置的实体框架模型来生成代码。但是,其中一个会创建DBContext
包含一个OnModelCreating
.
如何对此进行扩展,因为具有相同覆盖的部分类不起作用。
asp.net-mvc-3 - 使用 ADO.NET DbContext Generator 生成代码后重新组织代码
假设我使用 asp.net mvc 3 和实体框架数据库第一方法使用示例 Northwind 数据库创建应用程序。为此,我正在打开一个新的 asp.net mvc 3 项目,然后添加一个 ado.net 实体数据模型。我正在从现有数据库生成它,因为它已经创建。之后,我使用 ado.net DbContext 生成器为我生成代码。这些包括所有模型和 DbContext 文件(在本例中为 NorthwindContext)。
现在我面临的问题是重组代码。所有模型都应该放在项目的 Model 文件夹中。即使我在 Model 文件夹中生成代码,NorthwindContext 类也会在其中生成。即在 NorthwindContext.tt 文件下生成 NorthwindContext.cs。该文件应保留在 DAL 文件夹中,因为我将使用它来访问数据。现在,如果我只是将它拖放到 DAL 文件夹中,代码生成会自动停止(NorthwindContext.cs 文件中没有保留代码)。知道如何解决这个问题吗????
entity-framework - 更新相关实体 Entity Framework DbContext
我将 EF 与 DbContext 和几个 POCO 实体一起使用
现在,我需要更新报价
quoteDB 中的所有字段都将更新,除了quoteDB.ContactPersonAssigned 永远不会更新。为什么?实际对象正确更新,但没有更改保存到数据库中。
entity-framework-4 - DbContext SaveChanges 语句执行顺序
我有一个表,该表在具有序数列的表上具有唯一索引。因此,例如该表将具有以下列:
表 ID、ID1、ID2、序数
唯一索引跨 ID1、ID2、Ordinal 列。
我遇到的问题是,当从数据库中删除记录时,我会重新排序序数,以便它们再次连续。我的删除功能将如下所示:
问题是,当我调用 Context.SaveChanges() 时,它会破坏唯一索引,因为它似乎以与传递语句不同的顺序执行语句。例如,会发生以下情况:
- 重新排序序数
- 删除记录
代替:
- 删除记录
- 重新排序序数
这是 EF 的正确行为吗?如果是,有没有办法覆盖这种行为来强制执行顺序?
如果我没有正确解释这一点,请告诉我......
c# - 何时何地是实例化 ninject 内核的最佳位置
一直试图在网络表单应用程序中使用 ninject。但是,我仍然对在何时何地使用我的“绑定模块”实例化 ninjet 内核以及是否需要通过 Web 请求保存内核感到困惑。
我见过其他实现,您将 dbcontext 保存在 global.asax 事件 BeginRequest 中,任何后续存储库都从那里获取 dbcontext。
我是否需要用 ninject 做类似的事情,或者我完全错过了什么。
我已经阅读了一些建议的类似问题,但找不到一个可以解释它的问题,所以这对我来说很有意义。
任何帮助深表感谢。
entity-framework - 将 DBContext Generator 与 Entity Framework 4.1 一起使用时出错
当我将 ADO.NET DBContext Generator 与安装在 EDMX 上的 Entity Framework 4.1 一起使用时,出现以下错误:
错误:此模板试图加载组件程序集“Microsoft.Data.Entity.Design,Version=10.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。有关此问题以及如何启用此模板的详细信息,请参阅有关自定义项目模板的文档。
我正在使用带有 SP1 的 VS2010、来自 NuGet 的 Entity Framework 4.1、.net 4 类库
我错过了什么吗?
我安装了“Microsoft Entity Framework June 2011 CTP”,当我从项目目标框架中选择它时,模板“DBContext Generator”就可以工作了。这是否意味着我必须卸载 CTP 才能使其与正常的 .net 框架 4.0 一起使用?