Tag: entity framework

如何在另一个Expression中的单个对象上重用Expression

我觉得我错过了一些简单的东西,但是我没有找到回答我问题的文档。 我最近将一些linq投影分解为可重用的表达式。 它在集合上运行时效果很好,但我似乎无法弄清楚如何将表达式应用于另一个表达式中的单个对象。 以下是我要完成的一个示例: public class Person { public string ID { get; set; } public string Name { get; set; } } public class PersonDto { public string ID { get; set; } public string Name { get; set; } } public class Department { Person Manager { get; set; } List Employees { […]

根据FK表中的记录返回列

我有一个显示供应商的成功查询,但我现在想要添加的是显示已选择或未选择哪些供应商的列(显示为复选框列)。 这些选择存储在VendorsSelected表中,该表包含选择它们的FK ProfileID和UserName。 因此,当当前用户查看供应商时,某些供应商将匹配,而其他供应商则不会。 如何修改查询? 请注意,下面的Where子句将完成仅获取当前用户选择的供应商,但我想要的是所有供应商显示的是他们选择的每个供应商的true / false(复选框)列。 public IEnumerable BrowseVendors() { IQueryable viewModel = _db.VendorProfiles .Include(“VendorsSelected”) .Select(s => new BrowseVendorModel { ProfileID = s.ProfileID, Name = s.Name, CompanyName = s.CompanyName, City = s.City, State = s.State, DateCreated = s.DateCreated }) .Where(x => x.VendorsSelected.Select(s => s.UserName).Contains(HttpContext.Current.User.Identity.Name)) .OrderBy(v => v.ProfileID); return viewModel; }

实体或复杂类型…不能在LINQ to Entities查询中构造

为什么一个方法可以工作而另一个方法不工作,因为它们似乎都在做同样的事情,即构建一个实体。 那么我的问题是,有没有办法在L2E查询中构造实体,而不是只使用Linq或两者兼而有之? 这很好…… var queryToList = (from ac in ctx.AuthorisationChecks where wedNumbers.Contains(ac.WedNo) orderby ac.WedNo, ac.ExpAuthDate, ac.ActAuthDate select new AuthorisationCheck { Blah = ac.Blah }).ToList(); model.AuthorisationChecks = queryToList.Select(x => new AuthorisationCheck { Blah = x.Blah }).ToList(); 但是,如果我改变…… var queryToList 至 model.AuthorisationChecks queryToList // Of type List 我在标题中得到错误… The entity or complex type ‘Model.AuthorisationCheck’ cannot be constructed […]

迁移不按我的意愿工作… Asp.net EntityFramework

我正在学习这个教程asp.net电影教程,我的模型中有2个简单的文件。 public class Movie { public int ID { get; set; } [Required] public string Title { get; set; } } public class MovieDBContext : DbContext { public DbSet Movies { get; set; } } 另一个是Visual Studio给我的帐户模型: public class UsersContext : DbContext { public UsersContext() : base(“DefaultConnection”) { } public DbSet UserProfiles { get; set; […]

entity framework在db.SaveChanges()期间创建新数据行

根据本教程创建AngularJS应用程序: http : //jphoward.wordpress.com/2013/01/04/end-to-end-web-app-in-under-an-hour/ 类别: public class Todo { public int ID { get; set; } public virtual Status Status { get; set; } } public class Status { public int ID { get; set; } public string Type { get; set; } } function是单击一个按钮,它会更改状态。 单击该按钮时,所有正确的内容都将传递到Visual Studio。 最初它根本没有更新。 经过一些研究后,我发现了一些强制更改的方法,但是在db.SaveChanges()中,它向Status添加了一个具有相同“Type”的新行,只是从最后一个处获得的递增ID。 调用update的JS: Api.Todo.update({ id: todoID }, todo, […]

EF Core包含多个子级别集合

考虑这个聚合根… class Contact { ICollection Addresses { get; set; } ICollection Items { get; set; } ICollection Events { get; set; } } ……我这样用过…… class Person { Contact ContactDetails { get; set; } } 如何通过联系人急切加载所有集合? 我试过这个…… Context .Set() .Include(o => o.ContactDetails) .ThenInclude(o => o.Addresses) .ThenInclude(????) . … 我也试过这个…… Context .Set() .Include(o => o.ContactDetails.Addresses) .Include(o => […]

调用ToList()时内部LINQ查询的exception

昨天我正在研究代码重构,并遇到了一个exception,我真的找不到太多的信息。 这是情况。 我们有一对EF实体,它们通过关系表具有多对多的关系。 有问题的对象看起来像这样,省去了不必要的位。 public partial class MasterCode { public int MasterCodeId { get; set; } … public virtual ICollection MasterCodeToSubCodes { get; set; } } public partial class MasterCodeToSubCodes { public int MasterCodeToSubCodeId { get; set; } public int MasterCodeId { get; set; } public int SubCodeId { get; set; } … } 现在,我尝试对这些实体运行LINQ查询。 […]

entity framework代码优先问题(SimpleMembership UserProfile表)

如果您使用过ASP.NET MVC 4,您会注意到Internet应用程序的默认设置是使用SimpleMembership提供程序,这一切都很好,并且工作正常。 问题来自于默认的数据库生成,他们为UserProfile定义了一个POCO,如下所示: [Table(“UserProfile”)] public class UserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public string UserName { get; set; } } ..然后生成如下: using (var context = new UsersContext()) { if (!context.Database.Exists()) { // Create the SimpleMembership database without Entity Framework migration schema ((IObjectContextAdapter)context).ObjectContext.CreateDatabase(); } } 这工作正常,数据库生成正常,工作没有问题。 但是,如果我要像这样更改POCO并删除数据库: [Table(“UserProfile”)] public class […]

MoreLinq maxBy vs LINQ max + where

我正在使用带有MoreLinq扩展的EF5 ,同时在生产中测试我的程序(非常大的数据库),我发现该行: var x = db.TheBigTable.MaxBy(x => x.RecordTime); 需要很长时间( RecordTime是非索引datetime ) 是因为MaxBy总是在客户端运行(并且首先从数据库中获取所有记录)?

通过单独的`List `变量来排序列

我需要通过另一个列表中的元素索引对entity framework查询的结果进行排序。 我尝试了其他地方发现的建议,比如 .ThenBy(m=>list.IndexOf(m.Term)) 但我收到HTTP 500错误,所以我想知道我是否遗漏了一些东西。 调试时,我得到了这个内部exception。 LINQ to Entities无法识别方法’Int32 IndexOf(System.String)’方法,并且此方法无法转换为存储表达式。 特别是,我正在考虑这种情况。 private IEnumerable PopulateQuery(string selectedCampus) { var list = new List {“No Longer Alphabetical”,”Fall”,”Mid”,”Spring”}; return _db.MiaLog1A.Where(m => m.Campus == selectedCampus) .OrderBy(m => m.StudentName) .ThenBy(m=>m.Term) /* I would like to sort “Term” by the * order of “list”. */ .AsEnumerable(); } 有没有办法以这种方式排序,还是我只能通过字典排序或创建连接?