Tag: linq to entities

在运行时按日/周/月/年动态分组

我想基于传递给我的函数的int以不同的方式对查询进行分组。 目前我有这个非常hacky的解决方案: `.GroupBy(occurrence => new { date = // Bucket by day. timeBucket == 0 ? DbFunctions.TruncateTime(occurrence.occurrenceDate) : // Bucket by week. timeBucket == 1 ? DbFunctions.AddDays(DbFunctions.CreateDateTime(occurrence.occurrenceDate.Year, 1, 1, 0, 0, 0), 7*(occurrence.occurrenceDate.DayOfYear/7)) : // Bucket by month. timeBucket == 2 ? DbFunctions.TruncateTime(DbFunctions.CreateDateTime(occurrence.occurrenceDate.Year, occurrence.occurrenceDate.Month, 1, 1, 1, 1)) : // Bucket by year. DbFunctions.TruncateTime(DbFunctions.CreateDateTime(occurrence.occurrenceDate.Year, 1, […]

如何在Entity Framework中添加或删除多对多关系?

有一个多对多的UserFeed表位于User和Feed之间,表示类似Twitter的跟随关系。 它只有两个字段,形成一个复合键: UserID和FeedID 。 我需要编写一个方法,根据布尔标志从订阅源订阅或取消订阅用户。 public void SetSubscriptionFlag (int userId, int storeId, bool subscribe) { } 我是Entity Framework的新手,所以我试图找到并遵循“EF-ish”方式来实现这一目标。 我最初的想法是: 我应该创建一个多对多的Subscriptions属性( 编辑:这里的命中限制 ),而不是使用中间的UserFeed类; 在我这样做之后,我需要通过ID获取User实例,检查它是否在其Subscriptions提供了Feed并根据标志和当前存在添加/删除它; 在检查和添加/删除之前有一段时间间隔并且用户设法提交两个添加或删除请求时,弄清楚如何避免竞争冲突; 优化我的代码,以避免不必要的SELECT,如果有的话,因为我真正想做的只是一个SELECT和单个INSERT / DELETE。 我非常感谢您对我的观点的相关代码段和评论。 谢谢!

Linq Any总是返回true

我已经使用Linq to Entities多年了,但这是我第一次遇到这个问题。 我有提示和项目表,每个提示可以有很多项目。我在数据库中只有3个项目。 在编辑项目时,我想确保GivenId字段对于具有相同提示的项目是唯一的。 我用这个: Item item =db.Items.FirstOrDefault(c => c.Id == id); if (item != null) { if (db.Items .Any(x => x.GivenId == newGivenId && x.Id != item.Id && x.TipId == item.TipId)) { //newGivenId is either different or if it is the same, //it belongs to the same item } else { //newGivenId already […]

CompiledQuery与Plain Linq SQL生成

所以我正在对我的SQLServer数据库的不同方法进行一些分析。 我做了vanilla TSQL,CompiledQuery和一个非编译的Linq语句。 正如预期的那样,表演按照相同的顺序进行,但是在对后两者进行剖析时我发现了一些好奇的东西。 CompiledQuery生成的SQL比普通旧语句生成的SQL要好得多。 本地SQLExpress数据库; table被称为’foreignTable’,ColumnA是int,主键(索引); ColumnB是随机int。 Func GetByPK = CompiledQuery.Compile((testingDatabaseEntities1 ft, int key) => (ft.foreignTable.Where(x => x.ColumnA == key).FirstOrDefault().ColumnB)); 生成 SELECT [Project1].[ColumnB] AS [ColumnB] FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1] LEFT OUTER JOIN (SELECT TOP (1) [Extent1].[ColumnB] AS [ColumnB] FROM [dbo].[foreignTable] AS [Extent1] WHERE [Extent1].[ColumnA] = @p__linq__1 ) […]

WCF RIA服务 – 加载多个实体

我正在寻找一种解决以下问题的模式,我认为这种模式很常见。 我正在使用WCF RIA Services在初始加载时将多个实体返回给客户端。 我希望两个实体都异步加载,以免锁定UI,我想利用RIA Services来做到这一点。 我的解决方案似乎在下面。 我会用这种方法遇到问题/限制吗? 这有更好的模式吗? 谢谢! //create proxy to Domain Service var proxy = new RIAService.Web.DomainContext(); //call service; fire event when Presentation entities have been returned var loadPresentations = proxy.Load(proxy.GetPresentationsQuery()); loadPresentations.Completed += new EventHandler(loadPresentations_Completed); //call service; fire event when Topics entities have been returned var loadTopics = proxy.Load(proxy.GetTopicsQuery()); loadTopics.Completed += new […]

C#向上/向下移动项目

我有一个包含项目的列表。 他们都有一个’排序’列。 sort列的类型为int,它是唯一的。 场景: 排序1; 排序2; 排序3; 如果用户在列表中向上移动项目(例如排序3)(例如到位置1,这将给出排序值1),那么刚刚向上移动的项目必须向下移动在列表中,应相应地应用排序编号。 在这种情况下,所有转移的项目排序 – 1。 所以场景的最终状态如下所示: 排序1是排序3; 第3类是第2类; 排序3现在排序1; 我怎么能用LINQ做到这一点? 这不仅仅是3项。 它可以更多。 [编辑] public ActionResult Up(int id) { var item = dataContext.item.FirstOrDefault(x => x.item == id); return View(dataContext.items); }

如何使用entity framework中的位置计算关联实体

我有这个: var queryResult = (from post in posts select new { post, post.Author, post.Tags, post.Categories, Count = post.Comments.Count() }).ToList(); 但是我需要这样的东西: var queryResult = (from post in posts select new { post, post.Author, post.Tags, post.Categories, Count = post.Comments.Where(x=>x.IsPublic).Count() }).ToList(); 但是post.Comments是一个ICollection

使用LINQ to Entities更新数据库

我一直在研究如何使用LINQ更新现有记录,但我没有运气。 这是我创建的方法 – intellisense不喜欢db.SubmitChanges() 。 public void updateRestaurant(int RestID, int HoursID, string Web, string Desc) { RestaurantsEntities db = new RestaurantsEntities(); RESTAURANT restDetails = (from RESTAURANT in db.RESTAURANTs where RESTAURANT.REST_ID == RestID select RESTAURANT).Single(); restDetails.HOURS_ID = HoursID; restDetails.REST_WEBSITE = Web; restDetails.REST_DESC = Desc; db.SubmitChanges(); }

构建动态where子句,Linq To Sql

我首先使用EF Code 4.2,当where子句需要动态构建时,你建议采用什么样的解决方案? 然而,包含function非常需要: var results = db.Set.Where(“dynamic conditions”).Include(“….”); 上面的动态条件需要查找到另一个表来过滤记录:如果我想在Linq表达式中编写它,它将类似于: var result = db.Set().Where(c=>c.AccountId == _Id_param || db.Set().Any(a=>a.FkFieldId == c.AccountId && a.ParentId == _Id_param)).Include(“Quotes”); 我基本上需要上面表达式的动态linq,因为对于不同类型的Where子句字段更改(Contact只是一个示例),例如在一个Model中,FK字段可能是“AccountId”,而在另一个Model中,它需要是“AccountFKId” ”。 所以Where子句必须是动态的!

LINQ to Entities中的临时表

我有一个巨大的用户ID表。 我有一个我想要的用户ID数组。 我有两个具有外部用户ID密钥的表。 获得此信息性能的最佳方法是什么? 理想情况下,在SQL中,最终结果有点像这样(如果一个表中没有用户ID但是另一个表中没有用户ID,则为空值): userid table1value table2value 1 null 12 5 123 null