Tag: entity framework

entity frameworkIDENTITY_INSERT ON不起作用

我有这个代码,应该插入带有标识插入的记录 using (MCT_DB_ArchiveEntities ent = new MCT_DB_ArchiveEntities()) { ent.ExecuteStoreCommand(“SET IDENTITY_INSERT [clicks] ON”); ent.clicks.Attach(ck); ent.clicks.Context.ObjectStateManager.ChangeObjectState(ck, System.Data.EntityState.Added); ent.SaveChanges(); } 我收到这个错误。 当IDENTITY_INSERT设置为OFF时,无法在表’clicks’中为identity列插入显式值。

LINQ to Entities字符串到十进制列

我已经研究过这个问题了。 每个人和他们的兄弟都想知道如何将int或decimal转换为字符串,但我找不到任何与EF相反的例子。 我的数据源在数据库中有一个订单total_amt列,类型为varchar。 原因是源数据已加密。 解密器就是这样做的。 我可以重写它来解密到临时表,然后将这些结果插入到正确类型的表中,但是当我们扩展应用程序时,现在和数据库更新期间需要分配更多工作。 我很想能够投射列,但我无法弄清楚如何使用Linq和EF。 public ActionResult Orders_Read([DataSourceRequest]DataSourceRequest request) { var db = new Ecommerce_DecryptedEntities(); var orders = from s in db.Orders where s.Order_Complete == true select new { s.Order_Id, s.MySEL_Name, s.MySEL_EMail, s.MySEL_Bus_Name, s.Total_Amt, s.Order_Complete_DateTime }; DataSourceResult result = orders.ToDataSourceResult(request); return Json(result, JsonRequestBehavior.AllowGet); } 注意:结果需要是iQueryable。 我真的不想ToList这个,因为它会从数据库中提取所有数据。 这被绑定到一个Telerik KendoUI Grid,它正在传递分页,排序和其他参数(注意它正在使用传入的请求转换为KendoUI的ToDataSourceResult,该请求包含上述分页,排序等数据。

entity framework可查询的多个.Where()子句

我正在尝试使用Entity Framework实现复杂的filter:我想根据我提供的搜索条件向可查询对象添加where子句。 我可以在Entity Framework 6中执行以下操作吗? var queryable = db.Users.Where(x => x.Enabled && !x.Deleted); // Filter var userId = User.Identity.GetUserId(); queryable.Where(x => x.AspNetUser.Id == userId); queryable.Where(x => x.Status >= 2); // …etc 我知道我能做到: var queryable = db.Users .Where(x => x.Enabled && !x.Deleted) .Where(x => x.AspNetUser.Id == userId) .Where(x => x.Status >= 2); 但是我没有得到这个解决方案的预期结果。 它似乎忽略了第二秒的条款。

entity framework通配符和Linq

是否可以构造包含通配符的有效Linq查询? 我已经看到了这个问题的各种答案,建议使用: .Where(entity => entity.Name.Contains(“FooBar”)) .Where(entity => entity.Name.EndsWith(“Bar”)) .Where(entity => entity.Name.StartsWith(“Foo”)) 或构建RawSql: var commandText = @”SELECT field FROM table WHERE field LIKE @search”; var query = new ObjectQuery(commandText, context); query.Parameters.Add(new ObjectParameter(“search”, wildcardSearch)); 如果通配符不在字符串的开头或结尾,则第一个解决方案将不起作用,例如, searchTerm = “Foo%Bar” 。 第二个解决方案,使用RawSql,并不适合我,感觉就像一个廉价的出路。 但它确实有效。 我还没有尝试的第三个选项是创建一些可以解析搜索词并构造有效的Linq查询的东西,这是@Slauma在下面的链接2中进行的操作。 但是,如果通配符不在搜索词的开头或结尾,这仍然不起作用。 所以问题是:是否可以构造一个包含通配符的有效Linq查询? 编辑:值得一提的是,在这个实例中我使用的是Oracle数据访问组件(ODAC / ODP),但我认为在这种情况下它没有太大区别。 链接: 1. entity framework中的“喜欢”查询 2. 以搜索词为条件的精确和通配符搜索 3. 使用RawSql

当使用基类和私有setter时,关键组件“Id”不是“TypeName”类型的声明属性

我想为实体使用抽象基类,它不映射到任何表: public abstract class Entity { public virtual int Id { get; private set; } } 由于Id将自动增加,我不想允许从外部更改此属性。 因此,它的二传手是private 。 这是一个示例实体类型: public class Order : Entity { public virtual string Customer { get; set; } } …配置类型: public class EntityConfiguration : EntityTypeConfiguration where TEntity : Entity { public EntityConfiguration() { HasKey(o => o.Id); Property(o => o.Id).HasColumnName(“id”).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); […]

在Identity 2.0中扩展IdentityUserRole

因此,我的系统要求角色具有相关的到期日期。 我已经实现了Identity 2.0框架,事情进展顺利,但我遇到了一个让我怀疑我的结构的问题。 public class ApplicationUserRole : IdentityUserRole { public override string UserId { get; set; } public override string RoleId { get; set; } public DateTime Expiry { get; set; } } public class ApplicationDbContext : IdentityDbContext { public ApplicationDbContext() : base(“DefaultConnection”, throwIfV1Schema: false) { } static ApplicationDbContext() { Database.SetInitializer(null); } public static ApplicationDbContext […]

LINQ表达式中的聚合函数抛出错误。 (不能翻译成商店表达。)

错误:LINQ to Entities无法识别方法’System.String Aggregate [String,String](System.Collections.Generic.IEnumerable 1[System.String], System.String, System.Func 3 [System.String,System。 String,System.String])’方法,此方法无法转换为商店表达式。 Linq表达: Items = context.TESTANSWER.Where(x => x.ID == 6729223232) .Join(context.QUESTIONREPOs, x => x.QUESTIONID, y => y.ID, (x, y) => new { x = x, y = y }) .Join(context.OPTIONREPOs, p => pxQUESTIONID, q => q.QUESTIONID, (p, q) => new { p = p, q = […]

使用LINQ获取每第n行

我们在SQL数据库中有一个表,其中包含我需要创建图表的历史原始数据。 我们通过Entity Framework和LINQ访问数据库。 对于较小的日期时间间隔,我可以简单地读取数据并生成图表: var mydata = entity.DataLogSet.Where(dt => dt.DateTime > dateLimit); 但我们想要实现一个function,您可以从图表中快速“缩小”以包括更大的日期间隔(过去5天,上个月,过去6个月,过去10年等等)。 我们不希望为此绘制每个数据点的图表。 我们想要使用数据样本,我的意思是这样的 – 最近5天 :绘制表格中的每个数据点 上个月 :绘制表格中每10个数据点的图表 过去6个月 :绘制每100个数据点的图表 数据点和图表名称的数量仅是示例。 我需要的是一种从数据库中只选择“第n”行的方法。

Linq Where Contains …保持默认顺序

我有一个ID号的集合,我希望返回一些对象,我是通过使用linq语句来实现的,其中where使用了contains语句: var recentCats = (from i in EntityCache.Default.GetAll() where WebProfile.Current.RecentlyCreatedCategories.Contains(i.Id) && BoundCategory.ParentItemClass.Id.Equals(i.ParentItemClass.Id) select new CategoryInfo() { Category = i, ClassId = i.ParentItemClass.Id, ClassImage = NamedResourceManager.GetResourceBinary(i.ParentItemClass.NameResourceId) }); 这完全正常,除了我想保持返回集合中的项目顺序与进入列表中的项目顺序相同。例如,如果我有一个ID列表:14,603,388,我想要返回的对象的顺序不同,而不是缓存返回的顺序。 在entity framework中是否有任何方法可以执行此操作,或以任何方式执行此操作而不涉及我编写foreach循环? 谢谢

DbContext处理?

的DbContext public class HaberPortalDB : DbContext { public DbSet Haberler { get; set; } public DbSet Kategoriler { get; set; } public DbSet Yazarlar { get; set; } } public class Haberler { public virtual int Id { get; set; } public virtual string Baslik { get; set; } public virtual string Aciklama { get; […]