问题标签 [entity-framework-4.3]
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# - 是否可以将种子数据放在 EF 代码优先的 OnModelCreating 方法中?
我知道如何使用 EF 4.3 中的迁移 API 来处理种子数据。我整晚都在玩那个。但是,我的最终目标是让我的项目达到用户可以从源代码控制中拉出它并按 F5 的程度,然后它们就可以开始了,数据库,种子数据等等。
目前,代码优先在新版本上构建数据库方面做得很好,但是直到我在包管理器控制台中执行 Update-Database 后才会插入种子数据。那时它运行种子方法并插入我的种子数据。
- 在 OnModelCreating 方法中这样做可以吗?
- 我还能在这里利用 AddOrUpdate 扩展方法吗?
- 每次按 F5 时都会运行此种子数据吗?如果是这样,我可以检测数据库是否已经创建,并且只在初始数据库创建时添加这个种子数据?
code-generation - 防止在实体框架代码生成工具中生成导航属性
是否有代码生成工具可以让我设置是否要生成导航属性?
c# - 似乎找不到我的 EF 模型
这似乎是一个愚蠢的问题,但我得到了这个使用 Entity Framework 4.3 和 SQL Server 2008 的 ASP.NET MVC 3.0 应用程序。我需要在数据库中的一个表中添加一个字段。现在,该应用程序可以 100% 正常运行。问题是,我似乎无法在我的解决方案中找到 EDMX 文件,以便将实体框架与我在数据库中所做的更改重新同步。我还没有使用过 EF 4,我想知道是否有不需要我再这样做的更改?因为我在整个硬盘驱动器中搜索了 EDMX 文件,但它根本不存在,但应用程序运行良好。任何帮助,将不胜感激!
asp.net-mvc-3 - 管理开发和生产之间的 EF Code First 迁移
非常简短:
我正在根据Ladislav Mrnka的文章在现有项目上实施 EF 迁移,该项目以 Code First 的形式构建
在已投入生产的项目上实施 EF 迁移时,如何在应用于开发的更新和为生产生成的脚本之间管理迁移脚本?
我感到困惑的原因是为每个脚本生成的 MigrationId 都附加了一个时间戳。在我的迁移尝试中,我注意到在 dev 和 prod 上的 __MigrationHistory 表中记录的条目是不同的,因此提出了一个问题,如果数据库要经历相当多的迁移升级,那么是否出于任何原因需要降级,很难将确切的 MigrationId 关联起来以使用创建脚本update-database -script
非常直接的过程,您可以在其中创建$InitialMigration
创建表的__MigrationHistory
表。然后对您的 Model 进行任何更改以update-database
获取数据库Migrated。每当您有一批按逻辑分组的模型更改时,此过程就会循环。
看__MigrationHistory
表显示
entity-framework-4.1 - 在 EF4.1+ 中,您是否必须在依赖实体上公开外键属性才能强制识别关系?
如果我想使用 EF 4.1+(或 EF5 Beta)创建标识关系,这是否意味着我必须在依赖实体上公开外键属性?何时使用 Fluent API?当 DbContext 与实体位于不同的项目中时?
我看不出有任何其他方法可以做到这一点。DbModelBuilder 需要知道外键属性才能将其作为主键的一部分。但是,如果该属性未公开,并且 Entity 和 DbContext 实现位于不同的项目/库中,则无法公开它(不想将 InternalsVisibleTo 放在实体库上)。
entity-framework - 实体框架迁移问题
我遇到了 EF 迁移问题,特别是让“Enable-Migrations”命令正常工作。当我在包管理器控制台中执行命令时,我收到以下错误:
System.Management.Automation.PSargumentException:找不到类型 System.Data.Entity.Migrations.MigrationsCommands]:确保已加载包含此类型的程序集。
在 System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)
找不到类型 [System.Data.Entity.Migrations.MigrationsCommands]:确保已加载包含此类型的程序集。
在我看来,NuGet 控制台无法从我的 EF 程序集中找到 MigrationsCommands 类型。我已经检查过,该程序集是最新的(4.3.1),并且从对象浏览器中我无法找到 MigrationsCommands 类型或命名空间。
更新: 我仍然没有解决方案,但是当我在包管理器控制台中运行“Install-Package EntityFramework”命令时,问题的根源似乎在以下输出中。错误在这里:
entity-framework-4.3 - 使用并发检查多次调用 SaveChanges 时出现 EntityFramework 4.3 问题
-- 改变了问题的范围,因为这另一段代码更容易解释,但它的行为与让我编写问题的第一个版本的行为相同......
SaveChanges()
EF 4.3.1 并发检查和多次调用时的自动缓存有些奇怪。
当使用 EF 4.3(带有硬编码的列类型错误和所有)时,相同的代码可以正常工作(可能是因为没有并发检查)。使用 4.3.1 时,第二次SaveChanges()
调用崩溃如下。
以下是课程:
一些编码...
我的 Fluent API 如下所示:
第一种方法与第二种方法的唯一区别是对Repository.Recreate()
返回全新存储库的方法的调用。
更新 2
在 Context 类中,我将 SaveChanges() 方法重写为:
这段代码“解决”了这个问题,所以它就像我想的那样:SQL server 自动更改 TimeStamp 值(并发令牌),但 EF 出于某种我仍然不知道的原因没有更新属性 Version 上的该值。
问题是使用错误的版本我无法再次保存,因为我违反了 EF 的并发检查。
刷新本地实体(由 EF 自动缓存的实体)可以防止这个问题,但有一个主要的副作用:我必须手动刷新每个更改的条目。这一点都不好笑,因为:
- 检测本地实体(演员表和其他东西)
- 迭代每个本地实体并刷新它的状态
- 如果要忘记这一点,那么问题将再次发生。
为什么 EF 不会像IsConcurrencyToken()
PK 列那样自动更新版本列(设置为 )(如果 PK 是标识列,则在插入后更新)?
更新 3(可能的解决方案?)
覆盖 DBContext 中的 SaveChanges() 方法并放置此代码似乎可以正常工作:
这不是一个完美的解决方案。但它现在是自动的。应该做一段时间,直到出现更好的答案。
mysql - MSTest ExpectedException 测试失败
所以,我对这次失败感到困惑。我正在使用 MSTest 来运行一些集成测试(因为有一个数据库支持这个,我想我们会这样称呼它而不是单元测试)并且有一个像这样的测试方法:
AddRecipe
看起来像这样:
基础表具有表的外键cooking_method
,在这种情况下,我尝试插入的食谱具有不在该表中的烹饪方法,因此我希望抛出DbUpdateException。
测试失败并声明“AddRecipe_InvalidCookingMethod_ExpectExceptionThrown throw exception System.Data.Entity.Infrastructure.DbUpdateException, but exception System.Data.Entity.Infrastructure.DbUpdateException is expected....” 它继续提到有一个MySql类型的内部异常.Data.MySqlClient.MySqlException:无法添加或更新子行:外键约束失败...”
我正在使用 MySql 连接器 6.4.4、实体框架 4.3、VS 2010,如果其中有任何有用的信息。
想法?
解决方案:
感谢 Ladislav 提供的帮助。我已经移动了源代码树并更新了大部分但不是所有的参考资料。我的测试项目引用了错误版本的实体框架。
entity-framework - 谁能发现为什么我在测试 EF 5 beta 时不断收到此错误
安装了 Visual Studio 11 beta 来测试 EF 5 beta 但一直遇到这个错误。
找不到方法:'无效 System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)'。
项目是一个新的空白 MVC3 应用程序,下面是一些说明错误如何发生的代码。
在谷歌上寻找错误但没有出现,我不太确定错误指的是什么。我在下面添加了一段堆栈跟踪,以防万一。
[MissingMethodException:找不到方法:'Void System.Data.Objects.ObjectContextOptions.set_UseConsistentNullReferenceBehavior(Boolean)'。] System.Data.Entity.Internal.LazyInternalContext.InitializeContext() +0 System.Data.Entity.Internal.InternalContext.Initialize () +31
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +39
System.Data.Entity.Internal.Linq.InternalSet 1.get_InternalContext() +38 System.Data.Entity.Internal.Linq.InternalSet 1.Add(Object entity) +200 System.Data.Entity.DbSet`1.Add(TEntity entity) +721.Initialize() +137
System.Data.Entity.Internal.Linq.InternalSet1.ActOnSet(Action action, EntityState newState, Object entity, String methodName) +236
System.Data.Entity.Internal.Linq.InternalSet