Tag: entity framework 5

创建LINQ表达式,其中参数等于object

鉴于原始价值age我知道如何创建这样的表达式: //assuming: age is an int or some other primitive type employee => employee.Age == age 通过做这个: var entityType = typeof(Employee); var propertyName = “Age”; int age = 30; var parameter = Expression.Parameter(entityType, “entity”); var lambda = Expression.Lambda( Expression.Equal( Expression.Property(parameter, propertyName), Expression.Constant(age) ) , parameter); 除了在有问题的属性和常量不是原始类型的情况下,这种方法很好。 如果在对象之间进行比较,我将如何构造类似的表达式? 使用EF我可以写: Location location = GetCurrentLocation(); employees = DataContext.Employees.Where(e […]

entity frameworkCOUNT性能差

使用带有MySql Connector 6.6.6.0的Entity Framework 5.0进行基于计数的查询时,我们遇到的性能非常差。 我们的数据结构如下: 表:邮政 =========== ID INT PRIMARY KEY MemberID INT NOT NULL SiteID INT NOT NULL 说明VARCHAR(255)NOT NULL Image VARCHAR(255)NOT NULL CreatedDate DATETIME NULL 并使用具有linq查询的entity framework,如下所示: var count = entities.Post.Where(p => p.SiteID == 1 && p.CreatedDate!= null).Count(); 我们得到以下生成的SQL: 选择 `Extent1`.`ID`, `Extent1`.`MemberID`, `Extent1`.`SiteID`, `Extent1`.`Description`, `Extent1`.`Image`, `Extent1`.`CreatedDate` 从`Post` AS`Extent1` WHERE(`Extent1` .SiteID` = 1)AND(`Extent1` […]

EF5中的UOW和存储库模式

这是关于我从这里找到的一些entity framework材料的一些混淆: https : //www.asp.net/ 在本页中,它解释了如何使用存储库包装dbcontext并使用工作类单元包装存储库: http : //www.asp.net/mvc/overview/older-versions/getting-started-with-ef使用-5–MVC-4 /实施最库和-单元的功图案-在-AN-ASP-净-MVC的应用程序 但是,在此页面上,它指出dbcontext已经是UOW模式和存储库模式的组合: https ://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext( v= vs.103)的.aspx 因此,如果dbcontext已经解决了这些模式解决的问题,为什么要用EF5重新实现这些模式呢? 此外,在本教程中,UnitOfWork类似乎没有显示UOW应该给出的任何好处。 例如,它声明:“这样,当一个工作单元完成后,您可以在该上下文实例上调用SaveChanges方法,并确保所有相关更改都将得到协调。” 但它似乎只是无缘无故地包装dbcontext。 我想我错过了一些东西。 我没有看到在这个实现中有任何协调……如果出现问题,事情如何“回滚”?

同一个表中的两个一对多关系

我有一个名为SystemAccount的表,它(直到最近)有一个MasterAccountID ,它指向其父帐户(显然是一个int? )。 我的客户现在告诉我,有时某个帐户可能有2个父帐户(没有比这更多)。 我一直在尝试在我的SystemAccount类中进行调整,但它没有产生我想要的关系。 这是类代码的一部分: [ForeignKey(“MasterAccount”)] public int? MasterAccountID { get; set; } [ForeignKey(“SecondMasterAccount”)] public int? SecondMasterAccountID { get; set; } public virtual SystemAccount MasterAccount { get; set; } public virtual SystemAccount SecondMasterAccount { get; set; } public virtual List AllSubAccounts { get; set; } public virtual List SecondarySubAccounts { get; set; } 当我这样做时,我在表中获得4个FK,其中2个是自动生成的( […]

entity framework选择查询

我正在使用Entity Framework制作一个简单的插入,更新,删除,选择数据的应用程序 我已经插入,删除并选择了所有数据。 现在我想选择具有两个字段的filter的where条件 例如:我有桌子 userid username password email 现在需要选择例如where email = “” and password = “” 我知道如何在SQL中编写查询但没有entity framework线索。 还需要将此结果存储在数据表和循环解决方案中,以用于学习目的。 这可以帮助许多初学者

创建包含外部变量的LambdaExpression

我想创建像这样的lambda user => user.Address == address 但是没有编译一个,我想返回LambdaExpression 如果lambda像这样常量 user => user.Age == 50 然后我可以使用这种方法 public static LambdaExpression PropertyEqual(Type tEntityType, string propertyName, object value) { // entity => entity.PropName == const var itemParameter = Expression.Parameter(tEntityType, “entity”); return Expression.Lambda ( Expression.Equal ( Expression.Property ( itemParameter, propertyName ), Expression.Constant(value) // Tried to replace this with Expression.Parameter or Expression.Variable […]

何时调用SaveChanges

假设我在Controller调用了类似的东西: using (var context = new SqlContext()) { context.Items.Add(new Item(“item1”)); } 我应该调用context.SaveChanges(); ?

无法使ApplyCurrentValues(Entity)在Entity Framework 5中工作

同志们,任何人都可以帮助我,entity framework5似乎没有ApplyCurrentValues()方法。 是否有另一种方法来更新entity frameworkv5中的数据库对象。 这是我想要做的 odc.Accounts.Attach(new Account { AccountID = account.AccountID }); odc.Accounts.ApplyCurrentValues(account); odc.SaveChanges(); 但是我在ApplyCurrentValues()行中遇到了编译错误

entity framework5不清除导航属性

我在Entity Framework 5中遇到了这个奇怪的问题,我在我的一个实体中有一个导航属性,我想将其设置为null 。 但由于某种原因,我第二次调用此属性时,属性才会被清除: using (var db = new Entities()) { var vehicle = db.Vehicles.Single(v => v.Id == vehicleId); // After this call, ParkingBay is still set. vehicle.ParkingBay = null; // Only after this call, ParkingBay becomes null. vehicle.ParkingBay = null; db.SaveChanges(); } Entity Framework生成的Vehicle类如下所示: public partial class Vehicle { public int Id { […]

是否可以创建将项添加到entity frameworkdbset的通用方法?

我之前没有使用Entity Framework或generics,并且在减少代码方面遇到了一些困难。 我正在解析一个文本文件来加载10个查找表,其中的数据可能会在每晚更改。 文本文件具有“类型”的标题,后跟键/值集的列表。 我有这个完美的工作,但我想重构代码来清理它,并希望使用generics方法来实现这一点,所以我可以减少重复的代码。 我已经解析为generics方法,但我无法弄清楚如何以通用方式将实体添加到上下文中。 我必须遍历每种类型的实体列表并将它们添加到上下文中: void Main() { switch (line.ToUpper()) { case “AREA”: { List areaList = this.GetItems(file); foreach (var element in areaList) { if (context.Area.Find(element.Id) == null) { context.Area.Add(element); } } break; } case “CATEGORY”: { List categoryList = this.GetItems(file); foreach (var element in categoryList) { if (context.Category.Find(element.Id) == null) { context.Category.Add(element); […]