Tag: entity framework 4.1

首先在代码中获取任意实体的主键值

有这样的方法吗? object GetPrimaryKeyValue(DbEntityEntry entry); 或者应该如何实施?

EF 4.1和“集合被修改; 枚举操作可能无法执行。“exception

在过去的两天里,这让我疯狂。 我有3个非常基本的类(好,可读性降低) public class Employee { public string Name { set; get; } virtual public Employer Employer { set; get; } public Employee(string name) { this.Name = name; } } , // this basically ties Employee and his role in a company. public class EmployeeRole{ public int Id { set; get; } virtual public Employee […]

你能从DbSet获得DbContext吗?

在我的应用程序中,有时需要在一次操作中将10,000行或更多行保存到数据库中。 我发现,简单地迭代并逐个添加每个项目可能需要花费半个多小时。 但是,如果我禁用AutoDetectChangesEnabled它需要约5秒(这正是我想要的) 我正在尝试向DbSet创建一个名为“AddRange”的扩展方法,该方法将禁用AutoDetectChangesEnabled,然后在完成时重新启用它。 public static void AddRange(this DbSet set, DbContext con, IEnumerable items) where TEntity : class { // Disable auto detect changes for speed var detectChanges = con.Configuration.AutoDetectChangesEnabled; try { con.Configuration.AutoDetectChangesEnabled = false; foreach (var item in items) { set.Add(item); } } finally { con.Configuration.AutoDetectChangesEnabled = detectChanges; } } 所以,我的问题是:有没有办法从DbSet获取DbContext? 我不喜欢把它作为参数 – 感觉它应该是不必要的。

entity framework4.1 – EFTracingProvider

有没有办法让EFTracing提供程序与EF 4.1一起使用? EFTracing似乎需要一个objectcontext,我使用dbcontext。 提前致谢!

entity framework代码优先 – 为什么我不能以这种方式更新复杂属性?

我正在使用Entity Framework 4.1(代码优先)开展一个小型示例项目。 我的课程看起来像这样: public class Context : DbContext { public IDbSet People { get; set; } public IDbSet EmployeeTypes { get; set; } } public class Person { [Key] public int Key { get; set; } public string FirstName { get; set; } public string LastName { get; set; } virtual public EmployeeType EmployeeType […]

entity frameworkv4.1 LIKE

如何构建我的查询以产生输出SQL查询,如: SELECT [viewRegisters].[Id] AS [IdRegister] WHERE Name LIKE ‘%a%bc’ 要么 SELECT [viewRegisters].[Id] AS [IdRegister] WHERE Name LIKE ‘a%b%c’ 要么 SELECT [viewRegisters].[Id] AS [IdRegister] WHERE Name LIKE ‘a%b%c%’ 我正在使用.Net Framework 4.0,Entity Framework v4.1和C#。 EF v4.1转换此类型的linq查询: ((IQueryable)Data).Where(z => z.Field.Contains(“a%b%c%”)); 成: SELECT [viewRegisters].[Id] AS [Id] WHERE Name LIKE N’a~%b~%c~%’ ESCAPE N’~’ 那不是我想要的。 我希望能够像在DB中直接使用“百分比”符号一样。

‘ObjectContext’不包含’Entry’的定义,也没有扩展方法’Entry’

我使用NuGet将我的EntityModel升级到版本4.3 。 现在我想更改我的EntityObject.State ,但它无法找到.Entry()方法。 当前状态为Deleted 。 这就是我想要做的: someObjectContext.Entry(someEntityObject).State = EntityState.Unchanged; 添加了EntityFramework和EntityFramework.Extended的参考。 那么,我错过了什么? 编辑 我的NuGet输出: PM> Install-Package EntityFramework -Version 4.3.1 ‘EntityFramework 4.3.1’ already installed. Data already has a reference to ‘EntityFramework 4.3.1’.

entity framework – 如何检查表是否存在?

我正在使用entity framework和Code First方法。 基类DbContext具有创建和删除数据库以及检查其存在的function。 我想检查是否存在特殊表(实体)。 是否可以使用框架实现或者我是否需要编写自定义方法? 如果我需要编写自己的实现,那么最通用的方法是什么? 谢谢你的帮助。

entity framework4.1自创建数据库以来,创建数据库后立即更改了支持上下文的模型

我正在开发一个项目,它使用Entity Framework 4.1将我们的各种对象持久化到数据库(代码优先)。 我在Visual Studio中使用本地SQL Express DB进行测试,我们的Jenkins服务器将已提交的代码部署到测试服务器。 发生这种情况时,我暂时将本地连接字符串更改为指向测试数据库服务器并运行unit testing以重新创建测试数据库,以使其与我们的最新实体等相匹配。 我最近注意到我们的测试服务器发出了这个错误: 自创建数据库以来,支持’EntityFrameworkUnitOfWork’上下文的模型已更改。 手动删除/更新数据库,或使用IDatabaseInitializer实例调用Database.SetInitializer。 例如,DropCreateDatabaseIfModelChanges策略将自动删除并重新创建数据库,并可选择使用新数据对其进行种子设定。 这通常表明我们的代码已经更改,我需要运行unit testing来重新创建数据库。 除了我刚刚那样做! 我不相信我们的部署过程有任何问题 – 测试服务器上的DLL似乎与我的本地环境中的版本相同。 是否有任何其他设置或环境因素可能导致自创建数据库以来模型发生更改的错误? 我是新来的 – 谢谢你的帮助!

entity framework4.1 DbSet重新加载

我正在使用单个DbContext场景实例在WPF应用程序中本地DbContext数据库的整个副本。 我听说这是不好的做法,但我的数据库很小,我需要在应用程序运行时在本地完整复制它。 IQueryable的扩展方法, Load()允许我预加载DbSet的元素,这样我就可以将东西绑定到DbSet的Local属性。 数据库中的数据变化很快,因此我想要SaveChanges()并重新加载所有内容 ,甚至是已经跟踪过的对象。 再次调用Load()方法不会更新已加载的已跟踪但未标记为已更改的项目。 在DbSet中重新加载预加载项的首选方法是什么? 在我的脑海中,我只能想到调用SaveChanges() ,然后遍历所有条目并将跟踪和原始值都设置为数据库中的当前值,然后Load()可能已添加的任何新对象。 在我的场景中,不可能删除对象,但从长远来看,我可能不得不支持删除项目。 这似乎不对,应该有办法放弃一切并重新加载。 看起来更容易丢弃我的上下文并重新开始,但WPF中的所有元素已经绑定到Local´ObservableCollection ,这只是弄乱了界面。