Tag: entity framework

应用基于多维数组的LINQfilter

给定entity framework查询,例如 var query = (from property in _dbContext.Properties join location in _db.Locations on property.Id equals location.PropertyId select new PropertyDetail { Url = property.Url, Type = property.Type, Title = property.Title, Continent = location.Continent, Country = location.Country, State = location.State, }); 我已应用filter,例如: if (!string.IsNullOrWhitespace(searchFilters.Type)) { query = query.Where(model => model.Type == searchFilters.Type); } if (!string.IsNullOrWhitespace(searchFilters.Title)) { […]

EF 4.1 / Linq-to-SQL:什么是更好的:使用Equals或==?

我们正在讨论在LINQ查询中对int比较使用Equals或== 。 我们正在使用EF4.1 Code First。 什么是更好的? var query = context.Boodschappen .Where(b => b.BoodschapID == id).FirstOrDefault(); 要么: var query = context.Boodschappen .Where(b => b.BoodschapID.Equals(id)).FirstOrDefault(); 为什么 ?

entity framework核心仍然采用旧列

我最近从表中删除了一个ConversationId列。 当我开始调试我的服务并尝试保存时,我收到一个错误: 列名称’ConversationId’无效。 码: public class AstootContext : DbContext { public AstootContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { } public DbSet ServiceRequests { get; set; } } 我的实体看起来像这样: public class ServiceRequest { public int Id { get; set; } public int SenderUserId { get; set; } public int PriceTypeId { […]

使用entity framework在运行时动态选择列

我有这样的现有function public int sFunc(string sCol , int iId) { string sSqlQuery = ” select ” + sCol + ” from TableName where ID = ” + iId ; // Executes query and returns value in column sCol } 该表有四列存储整数值,我使用上面的函数分别读取它们。 现在我将它转换为Entity Framework。 public int sFunc(string sCol , int iId) { return Convert.ToInt32(TableRepository.Entities.Where(x => x.ID == iId).Select(x […]

如何从EF LINQ查询中调用DB函数?

在我的数据库中,我定义了一些函数,假设它叫做fnTest 。 是否可以从我的LINQ / EF查询中调用该函数? 像这样的东西: var param3, param4; var res = (from x in db.Something where x.field1 > 0 orderby fnTest(x.f1, x.f2, param3, param4) select x).Take(20); 如您所见,我需要在DB端执行该函数,因为我需要使用它返回的值对数据进行排序。 前两个参数是表中的字段,后两个参数是一些将在程序中更改的数字,但对于每个查询将是常量。 是否有可能以某种方式调用已在DB中创建的函数? 或者我需要使用这样的东西: ((IObjectContextAdapter) context).ObjectContext.CreateQuery 并手动编写查询?

使用reflection,在已存在的对象上调用Field的方法

我有一个名为AccessData的类的实例,它inheritance自DbContext。 所以它是一个entity framework代码第一个上下文类,看起来像这样…… public class AccessData : DbContext { public DbSet apps_AppsList; public DbSet apps_AppsOldList; … //Several other DbSet properties } 使用Reflections,我已经在AccessData对象上找到了这些DbSet属性之一,就像这样…… var listField = accessData.GetType().GetField(typeName + “List”); 我现在需要能够向此DbSet属性添加对象。 鉴于我只有一个表示DbSet字段的FieldInfo对象,如何在AccessData对象上调用此特定Field的Add方法并传入一个对象? 或者换句话说,我该怎么称呼以下内容? accessData..Add(obj); 希望这是有道理的。

entity framework5无效的列名称错误

我目前正在使用EF 5 Code First编写计费应用程序,当我运行应用程序时遇到错误。 有问题的数据库对象如下: [Table(“Client”)] public class ClientBase { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ClientID { get; set; } [Required] public string ClientName { get; set; } [Required] public bool IsActive { get; set; } [Required] public string ClientContactName { get; set; } [Required] public string ClientContactEmail { get; set; } [Required] public DateTime ClientStartDate […]

无法转换为LINQ to Entities存储表达式

我对LINQ to Entities相对较新,但是使用LINQ to Sql很多。 我正在使用Visual Studio 2013与EntityFramework 6和MVC 5。 两者之间最大的区别在于Linq2SQL能够在SELECT查询本身内执行转换,而LINQ2Entities并不宽容,并且必须在执行LINQ查询之前进行正确的转换。 因此,我收到错误: 类型’BillYeagerDB.EdmxExtensionMethods’上的指定方法’System.Decimal ConvertToDecimal(Byte)’无法转换为LINQ to Entities存储表达式。 在做了大量的研究之后,特别是在使用这个问题的stackoveflow上,我发现了一个链接( LINQ to Entities无法识别方法’Double Parse(System.String)’方法,并且这个方法无法转换为商店表达式 )工作。 我确定作者给出了作品的例子,但他正在使用ObjectContext,我正在使用DbContext。 我也相信它对我有用,但我想我只是错误地设计了扩展方法(这给了我上面的错误)。 请注意,此特定问题与Linq查询中的AvgRating变量有关。 一旦我能够使用它,我可以为任何其他转换执行相同类型的修复。 请注意, AvgRating定义为Decimal类型, a.Rating.RatingValue定义为类型Byte。 如果有人能够理顺我,我会非常感激。 这是我的代码。 我正在尝试使用以下查询,由于转换问题,我知道这些查询无效(如前所述)。 原始LINQ查询: namespace BillYeagerDB { public class BillYeagerDB { public async Task<List> GetRestaurantListAsync() { try { using (BillYeagerEntities DbContext = new BillYeagerEntities()) { DbContext.Database.Connection.Open(); […]

使用byte作为主键数据类型

我正在使用entity framework代码优先。 我有一个表不会超过100行,我想使用数据类型byte (SQL Server中的tinyint )作为主键。 这是我到目前为止: [Key] public byte Id { get; set; } 问题是当Entity Framework创建数据库时,它没有设置允许行在插入时自动递增的标识规范属性。 如果我将数据类型更改为Int16 (SQL Server中的smallint ),一切都很完美。 有没有办法告诉entity framework设置自动增量属性,还是一个字节不能用作entity framework代码优先的主键?

检测具有相同子项的实体

我有两个实体, Class和Student ,以多对多关系链接。 从外部应用程序导入数据时,遗憾的是一些类是一式两份创建的。 “重复”类具有不同的名称,但是相同的主题和相同的学生。 例如: {Id = 341,Title =’10rs / PE1a’,SubjectId = 60,Students = {Jack,Bill,Sarah}} {Id = 429,Title =’10rs / PE1b’,SubjectId = 60,Students = {Jack,Bill,Sarah}} 匹配这些重复类的名称没有一般规则,因此识别这两个类是重复的唯一方法是它们具有相同的SubjectId和Students 。 我想使用LINQ来检测所有重复项(并最终合并它们)。 到目前为止,我尝试过: var sb = new StringBuilder(); using (var ctx = new Ctx()) { ctx.CommandTimeout = 10000; // Because the next line takes so long! var allClasses […]