Tag: entity framework

entity framework和DbContext – 对象跟踪

我对Entity Framework中DbContext的使用有点困惑。 这是我很困惑的场景。 我使用dbcontext中的linq查询来获取数据。 就像是: List transactions = DefaultContext.Transactions.ToList(); 然后我直接在数据库中更新该查询中返回的一个事务中的列。 然后我再打电话: List transactions = DefaultContext.Transactions.ToList(); 当列表返回这次时,它不会反映我在运行update语句时所做的更新/更改,除非我遍历所有事务并重新加载它们: foreach (DbEntityEntry item in DefaultContext.ChangeTracker.Entries()) { DefaultContext.Entry(item.Entity).Reload(); } 这是正常的行为吗? 我假设在我的初始查询中,它们被附加到对象上下文。 然后当我第二次查询时,它不会访问数据库,只是从对象上下文中提取实体,除非我清除/分离或单独重新加载所有实体。

Linq Entity Framework通用过滤方法

我有一些方法对我的实体的数据执行标准过滤(使用Entity Framework v4)。 示例#1: protected IQueryable GetActiveProducts( ObjectSet products ) { var allowedStates = new string[] { “Active” , “Pending” }; return ( from product in products where allowedStates.Contains( product.State ) && product.Hidden == “No” select product ); } 示例#2: protected IQueryable GetActiveProducts( ObjectSet customers ) { var allowedStates = new string[] { “Active” , […]

C#EF 4.1在DbContext中动态创建表

我想在运行时将表添加到SQLCe数据库,因为表名不是静态的并且在编译时是已知的。 我尝试使用Entity Framework 4.1和DbContext执行此操作,如下所示: public class PersonContext : DbContext { public PersonContext() : base(“UnicornsCEDatabase”) { } } public class Person { public int NameId { get; set; } public string Name { get; set; } } public class Program { static void Main(string[] args) { using (var db = new PersonContext()) { db.Database.Delete(); //Try to […]

entity framework中的批量删除

我想使用linq批量删除表中的记录。 有一篇post描述了如何做到这一点: LINQ to Entities中的批量删除 var query = from c in ctx.Customers where c.SalesPerson.Email == “…” select c; query.Delete(); 但是我的var变量中不存在“删除”function。 此外,我的上下文中不存在“SubmitChanges”function。

.Single或Default with condition或Where子句

我有以下代码 return this.Storage.Customer.OfType() .Include(b => b.Order) .Where(cust => cust.Id == customerId && cust.CustomerType== (int)cusType) .SingleOrDefault(); 它可以改写如下消除where。 return this.Storage.Customer.OfType() .Include(b => b.Order) .SingleOrDefault(cust => cust.Id == customerId && cust.CustomerType == (int)cusType); 哪一个更好实践,为什么?

List 类型的EF属性未在db中创建

我正在使用代码EF开发一个ASP.NET MVC5应用程序。 我的代码: public enum Language : byte { [Display(Name = “Turkmen”)] TKM = 1, [Display(Name = “Russian”)] RUS = 2, [Display(Name = “Chineese”)] CHN = 3, [Display(Name = “English”)] ENG = 4 } 我的模型类是: public class Person { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int PersonID { get; set; } [Required] public string Name { get; set; […]

如何使用EntityFramework.BulkInsert?

我正在尝试使用位于http://efbulkinsert.codeplex.com/的 EntityFramework.BulkInsert。 它是Entity Framework的扩展。 我安装了正确的NuGet包,并using EntityFramework.BulkInsert添加到我的class级顶部。 当我去做一个context.BulkInsert(entities) “BulkInsert”下面有一条红线,好像它不存在一样。 有人可以帮我正确使用这个扩展吗? 我之前没有使用过扩展方法。 你应该能够做到这一点: context.BulkInsert(entities);

使用entity framework中的SqlQuery RAW查询返回匿名类型

如何使Entity Framework SqlQuery返回Anonymous类型。 现在我运行一个context.TheObject.SqlQuery() RAW查询。 查询连接两个表,我想返回连接表的结果。 如果我使用类型context.TheObject.SqlQuery()我只能看到相同类型的表的结果。 我试过db.Database.SqlQuery(“the sql query here”) ; 使用与结果对象匹配的预定义类,但所有字段均为null。 使用Entity Framework 6和MySQL。

entity framework6:代码优先级联删除

所以这里有几个类似的问题,但我仍然有问题确定我在简化场景中缺少的是什么。 假设我有以下表格,巧妙地以自己的名字命名: ‘JohnsParentTable’ (Id, Description) ‘JohnsChildTable’ (Id, JohnsParentTableId, Description) 结果类看起来像这样 public class JohnsParentTable { public int Id { get; set; } public string Description { get; set; } public virtual ICollection JohnsChildTable { get; set; } public JohnsParentTable() { JohnsChildTable = new List(); } } internal class JohnsParentTableConfiguration : EntityTypeConfiguration { public JohnsParentTableConfiguration() { ToTable(“dbo.JohnsParentTable”); […]

不同DbContext和不同模式之间的entity framework关系

所以,我有两个主要对象,会员和公会。 一个会员可以拥有一个公会,一个公会可以拥有多个会员。 我在一个单独的DbContext和单独的类库中有Members类。 我打算在多个项目中重用这个类库并帮助区分,我将数据库模式设置为“acc”。 我已经广泛测试了这个库,可以在acc.Members表中添加,删除和更新成员。 行会类是这样的: public class Guild { public Guild() { Members = new List(); } public int ID { get; set; } public int MemberID { get; set; } public virtual Member LeaderMemberInfo { get; set; } public string Name { get; set; } public virtual List Members { get; set; } […]