问题标签 [entity-framework-6]
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.
c# - EntityFramework 尝试插入未更改的附加实体
我有这样的模型:
在我的缓存中,我存储这些对象的集合以供统计。当我尝试保存此集合时,我收到无法添加 ChildA 的错误,因为它违反了主键约束。
ChildA 存在于数据库中并且它附加到上下文中,所以我不明白为什么 EF 试图插入它。我的附加方法看起来像这样
entity-framework - EF6/Code First:在第一次查询期间超级慢,但仅在调试中
我正在使用 EF6 rc1 和 Code First 策略,没有预编译视图,问题是:如果我编译并运行 exe 应用程序,运行第一个查询大约需要 15 秒(没关系,因为我仍在处理 pre - 生成的视图)。但是,如果我使用 Visual Studio 2013 Preview 来调试完全相同的应用程序,则在运行第一个查询之前需要将近 2 分钟:
有没有办法消除这个额外的时间?我在这里做错了吗?
Ps.:上下文本身并不复杂,它只是充满了 200 多个表。
编辑:发现问题在于,在调试期间,EF 似乎正在生成视图而忽略了预先生成的视图。使用 EF 的源代码,我发现该属性:
是时间被消耗的地方。但这很奇怪,因为调试只需要时间。我在这里错过了什么吗?
编辑:找到与该问题相关的更多信息:Using the Process Monitor (by Sysinternals) 我发现它的“desenv.exe”进程正在消耗大量时间。更具体地说,它消耗“线程退出”的时间。它重复线程退出堆栈 36 次。我不知道这个信息是否很有用,但是我在堆栈中保存了一个“.cvs”,这是他的正文:[...](编辑:删除了“.cvs”正文,我可以再次发布如果有人真的认为它会有用,请通过评论,但它令人困惑且太大。)
编辑:安装了 VS2013 Ultimate 和 Entity Framework 6 RTM。安装了 Entity Framework Power Tools Beta 4 并使用它来生成视图。没有任何改变...如果我运行 exe 需要 20 秒,如果我“开始”调试需要 120 秒。
编辑:创建了一个小项目来模拟错误:http ://sdrv.ms/16pH9Vm 只需在环境里面运行项目,直接通过.exe,点击按钮,比较加载时间。
sql-server-2012 - 带有 SQL Server 2012 的实体框架 6 给出 System.Data.Entity.Core.ProviderIncompatibleException
我有 Visual Studio 2012,我正在使用 EF 6 的实体框架堆栈。我做的一切都是正确的,但是在添加迁移时我得到了错误。
System.Data.Entity.Core.ProviderIncompatibleException
这是课程
上下文文件
以及用于连接字符串的 web.config 文件部分
每当我尝试将迁移添加为时,我都会收到错误消息:
System.Data.Entity.Core.ProviderIncompatibleException:从数据库获取提供者信息时出错。这可能是由 Entity Framework 使用不正确的连接字符串引起的。检查内部异常以获取详细信息并确保连接字符串正确。---> System.Data.Entity.Core.ProviderIncompatibleException:提供者没有返回 ProviderManifestToken 字符串。--->
System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)
entity-framework-migrations - Entity Framework 6 的哪些命令支持迁移?
在支持每个数据库单个 DbContext 的 Entity Framework 5.0 中,我们使用这种语法
Enable-Migrations -Contexttypename myDbcontext // to enable migration
update-database - verbose // to update Database Schema
我们如何在 Entity Framework 6 中为单个数据库的多个 DbContext 执行相同的操作?请包含示例或链接。
期待的感谢
问候
祖尔菲卡尔
entity-framework - “Company.Model.User”类型和“Company.Core.Model.User”类型都具有相同的简单名称“User”,因此不能在同一模型中使用
我有一个基本实体类MyCompany.Core.Model.User
,用于User
实体的公共属性:
我还有一个基映射类MyCompany.Core.Model.UserMap
来设置基类的代码优先映射User
:
在一个单独的程序集中,我有一个派生类MyCompany.Model.User
,它继承自基User
类并使用一些附加属性对其进行扩展:
此外,我有一个派生映射类MyCompany.Model.UserMap
来为附加属性提供附加配置:
但是,当添加MyCompany.Model.User
到上下文并注册时,MyCompany.Model.UserMap
我收到以下错误:
“MyCompany.Model.User”类型和“MyCompany.Core.Model.User”类型都具有相同的简单名称“User”,因此不能在同一模型中使用。给定模型中的所有类型都必须具有唯一的简单名称。在 Code First fluent API 中使用“NotMappedAttribute”或调用 Ignore 以从模型中显式排除属性或类型。
此链接表明您不能在模型中使用相同的“简单名称”两次。
为什么要在模型中注册基类“简单名称”,有没有办法绕过它来实现这种实体继承?
我怀疑简单的解决方案是重命名派生类;但是我宁愿避免这种情况,因为在多种情况下可能会有很多推导。
注意:使用实体框架 6.0.0-rc1(预发布)
c# - EF 调试时的奇怪行为
我有一个代码优先的 EF 实现,我有一个服务层函数GetNavigations()
来创建IEnumerable<Navigation>
.
GetNavigations()
当我运行我的代码并在我的 MVC 视图中点击断点时,我注意到当我尝试访问对象属性时,我的调试指针回到了内部。为什么这样做?它真的一遍又一遍地运行我的功能吗?
我也想知道为什么我的测试不会进入我的函数调用,除非我执行result.Count()
.
看法
测试方法
控制器
c# - 根据配置中的提供者更改 EF6 中的连接字符串
我已从 EF5 移至 EntityFramework 6。
现在我面临一个问题,我想根据 app.Config 中设置的提供程序更改连接字符串。含义 如果是 SqlServerCe,那么我需要更改 DatabaseFile.sdf 文件名来更改数据库。如果是SqlServer,我需要更改InitialCataloge。
我通过获取类型来做到这一点
'Database.DefaultConnectionFactory' 但这在 EF6 中已过时。
如何根据提供者修改连接字符串。
我无法通过使用 DbConfiguration 属性来做到这一点,因为我每次都需要修改连接字符串。
visual-studio-2013 - EF6 中 Code First 的逆向工程师在哪里
了解 Power Tools 已集成到 EF6 的主体中 - 在哪里可以找到从现有数据库中触发“逆向工程师 POCO”的界面?
非常感谢
entity-framework - 实体框架自定义约定顺序
根据Entity Framework 6的自定义约定规范,最后一个约定胜出。我看到了相反的行为。如果我使用这些约定:
然后在我的迁移中,除非该属性具有属性,否则所有string
列都是。nvarchar(450)
[UseMaxLength]
如果我切换顺序(在基于属性的约定之前放置默认值HasMaxLength(450)
),则所有字符串列的长度均为 450,忽略自定义属性。这似乎与规范规定的相反(最后应用的约定获胜)。
这是一个错误,还是我误解了规范?