问题标签 [entity-framework-6.1]
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.
visual-studio-2012 - EF6 和 SQL Server CE 4.0 是否可以与 64 位的 VS2012 Express 一起使用?
当我尝试:
- 添加一个新的
ADO Entity Data Model
- 选择
EF Designer from database
- 选择一个现有的数据库连接,包括连接字符串,并将其保存到
app.config
- 不要复制/修改连接(我尝试使用副本和项目中已有的数据库)
我收到一个错误
您的项目引用了最新版本的实体框架;但是,无法为您的数据连接找到与此版本兼容的实体框架数据库提供程序
我已经尝试了几个小时来让这个配置工作但没有成功。我正在使用以下内容:
- Windows 7 64 位
- Visual Studio 2012 Express(C# 应用程序)
- SQL Server Compact Edition 4.0 SP1 x64 ENU - 我无法在 64 位操作系统上安装 32 位版本。
- 2014 年 3 月 17 日实体框架 6.1.0
EntityFramework.SqlServerCompact
6.1.0
我曾多次尝试卸载并重新安装组件 3-5 次。
我在app.config
文件中有以下内容(省略了该<entityFramework>
部分):
我已经多次重建解决方案,没有错误。应用程序启动。
我已经重启了多次。
我已经确认该项目没有引用System.Data.Entity
.
请告诉我我缺少一些简单的东西。
c# - 实体框架渴望加载关联的集合,但不会延迟加载它
我试图让对象的Studies
属性Department
延迟加载,但它只会在我急切加载时加载。我已经在没有结果DepartmentId
的类中添加了 a ,Study
used和. 公共和私人二传手似乎没有区别(也不应该)。似乎没有任何效果。使用 EF 6.1。ICollection
ISet
virtual
c# - 实体框架 6.0.1 -> 6.1 更新,项目引用说“6.0.0.0”
我已经更新了我的解决方案以使用 EF 6.1Library Package Manager
接下来,我查看了待定更改列表,每个项目中的 EF 参考类似于以下几行:
为什么它Version=6.0.0.0
以完全限定名称指定?
asp.net-identity - 将 SimpleMembership 迁移到 Identity 2.0
这个问题已经演变,所以我更新了标题。
这是原始标题:Identity 2 UserManager.Find throws "Invalid object name 'dbo.ApplicationUser'" 错误
我正在从 SimpleMembership 转换为 Identity 2。我已经运行了转换脚本并重构了各种文件以供 Identity 使用。我可以构建和运行该应用程序,但是当尝试登录时,在 var user = UserManager.Find(vM.UserName, vM.Password);
账户控制人:
应用用户:
数据库上下文:
为什么用户管理器试图访问 dbo.[ApplicationUser](不存在)而不是 dbo.[AspNetUsers]?
更新 1: 我降级到 Microsoft.AspNet.Identity.EntityFramework 1.0 和 Microsoft.AspNet.Identity.Core 1.0,现在在调用 UserManager.Find 时出现“无效的对象名称 'dbo.IdentityUser'”错误。
更新 2:
我升级回 Identity 2.0,只是想看看备份和删除数据库会发生什么,然后先用代码重新生成它(启用迁移、更新数据库)。
而不是添加以下默认身份表:
AspNetRoles
AspNetClaims
AspNetUserLogins
AspNetUserRoles
AspNetUsers
它添加了这些表:
dbo.ApplicationUser
dbo.IdentityRole
dbo.IdentityUserClaim
dbo.IdentityUserLogin
dbo.IdentityUserRole
这可以解释为什么它正在寻找 ApplicationUser。我的配置强制使用这些名称而不是标准身份名称的原因是什么?我可能可以将我的迁移脚本更改为这些名称,但最终我会得到非标准的表名,这只会导致未来的混乱。如何配置以获取默认的身份表名称?
asp.net-mvc-5 - EntityFramework.Extensions 6.1 批量删除抛出“序列包含多个元素”
尝试使用 EntityFramework.Extensions 进行删除,我有一个案例,我从标题中得到错误。这是场景:
这是映射:
这就是我删除行的方式:
我的设置有什么问题?当我这样做时它工作正常:
c# - 实体框架——跨多个上下文在内存中缓存一个对象
我将 Entity Framework 6 与租户隔离的应用程序一起使用。我通过查看请求主机名来确定租户,然后在整个应用程序中使用它,将其设置在租户拥有的记录中,等等。
每个上下文都会在请求结束时处理。但是,由于租户查找非常频繁,我实际上每个主机名只执行一次,然后将对象放入内存中的只读字典中。
这里的问题是,如果您什么都不做,您最终会得到与请求一样多的重复租户记录(直到由于现在模糊的查询而开始抛出问题,无论如何)。
我最初通过在数据存储的构造函数中添加对 DbSet.Attach() 的调用并附加当前租户来解决此问题。但是,如果您同时有多个请求,则会收到一个异常通知,您不能将同一个对象附加到多个上下文:“一个实体对象不能被多个 IEntityChangeTracker 实例引用。” 由于我偶尔会通过访问页面太快而在我的开发机器上触发它,我无法想象它适合生产。
我尝试通过在保存之前添加此调用来更改内容:
好吧,那也行不通。我收到错误“无法定义两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象。”
好的...那我该怎么做呢?我要做的就是(就最终的 SQL 结果而言)最终得到具有对现有租户行 PK 的外键引用的各种行。
我发现引用 EF4 的一些东西建议了 Detach 方法,但我不确定我是否打算再调用它,因为它现在从 DbSet 的公共接口中隐藏了。如果我是,我不确定在哪里。当我第一次检索记录?
编辑:似乎确实有效的一个选项是转到上下文并根据缓存记录的 ID 提取租户记录。但是,现在我要无缘无故地查询数据库。
entity-framework - 如何调试模糊的实体框架“无法设置字段/属性”错误?
我是 EntityFramework 的新手,并且继承了一个项目,使用它来执行应该是非常简单的 CRUD 操作。
相反,当我尝试更新一列时,我在 .SaveChanges() 上收到以下错误:
无法在实体类型 System.Collections.Generic.HashSet`1[[Project1.Repository.table2, Project1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]] 上设置字段/属性 table1。有关详细信息,请参阅内部异常。
InnerException 为空。
我正在尝试更新 table1,table2 有一个指向 table1 的外键,但我现在根本没有尝试更新该表。我的问题是,我能做些什么来找出这里的实际问题是什么?我真的不知道如何在这方面取得进展。在这一点上,我的选择似乎是删除 EF 模型并尝试自己重新构建它,或者只是将整个东西装箱并使用 SQL 来完成它。
c# - Fluent API 支持多语言数据库
我在一个多语言网站(MVC 5,EF 6.1)上工作。为了支持某些字段的多种语言,我将表格分成两部分。一种用于与语言无关的数据,另一种用于与语言相关的数据。
例如我的产品表是(简化的):
所以对于上面的结构,我创建了 2 个实体类和一个 ModelBuilder 映射:
一切正常,EF 用上面的字段创建了我的数据库。此时我有点糊涂了。CRUD 操作的最佳方式是什么?
如何查询数据?我刚刚在下面写了这段代码,但我不知道这是否是最好的方法:
使用这种技术,我可以获得非常简单的值:
如何创建新记录?我的测试代码是:
上面的代码工作正常,但我不确定这是否是处理多语言(拆分表)数据库结构的最佳方法。EF 或 FluentAPI 中是否有任何基础设施可以更简单、更好地处理这个问题?有什么模式或约定吗?如果我有多个翻译表,我应该使用抽象基类来处理这些操作吗?我应该出于任何原因在这里使用泛型吗?
entity-framework - 实体框架代码先迁移保留现有数据
我正在使用 EF 6.1,并在现有数据库中使用代码优先方法和生产环境中的数据。
是否可以迁移模型更改并保留现有客户的数据?
c# - 覆盖从数据库生成的 edmx 模型
使用 EF Database First 时,很容易从数据库中选择表/存储过程,并将它们添加到模型中。
但是,我想自定义从数据库更新模型的方式,以自动设置某些功能,并节省用户的工作量/错误。
需要明确的是,我不是在谈论在 tt 文件生成时进行更改,而是实际上当通过向导从数据库中填充 edmx 时。
我感兴趣的具体行动是:
- 根据严格的约定,在添加表时自动将一些存储过程添加到模型中。
- 将这些存储过程设置为
Private
(Public
默认情况下) - 自动将这些存储过程映射到表的 CRUD 操作。
似乎有几个选择:
- 覆盖默认模型生成,以便在添加/更新表时进行更改。
- 添加表后更新 edmx 的 XML(我可以自动触发吗?)
我宁愿选择选项 1,因为它会更干净,但还没有找到实现这一目标的机制。(我目前正在处理 CodePlex 的 EF 代码!)
我坚持选项2吗?