Questions tagged «linq-to-entities»

该标签用于有关LINQ to Entities的问题,这意味着使用ADO.NET实体框架进行LINQ查询。请注意,这与LINQ to SQL或其他LINQ提供程序不同。

6
如何使用Linq to Entity获得最大ID?
我有一个表User,该表有一个Identity列UserID,现在返回给我max的正确的Linq to Entity代码行是UserID什么? 我试过了: using (MyDBEntities db = new MyDBEntities()) { var User = db.Users.Last(); // or var User = db.Users.Max(); return user.UserID; } 但是Last和Max似乎并没有得到支持。 有任何想法吗?


7
LINQ to Entities不支持指定的类型成员。仅支持初始化程序,实体成员和实体导航属性
var result = (from bd in context.tblBasicDetails from pd in context.tblPersonalDetails.Where(x => x.UserId == bd.UserId).DefaultIfEmpty() from opd in context.tblOtherPersonalDetails.Where(x => x.UserId == bd.UserId).DefaultIfEmpty() select new clsProfileDate() { DOB = pd.DOB }); foreach (clsProfileDate prod in result) { prod.dtDOB = !string.IsNullOrEmpty(prod.DOB) ? Convert.ToDateTime(prod.DOB) : DateTime.Today; int now = int.Parse(DateTime.Today.ToString("yyyyMMdd")); int dob …

24
Linq to SQL不会遗漏要点吗?ORM映射器(SubSonic等)不是最佳解决方案吗?
我希望社区对Linq to Sql和其他ORM映射器有一些想法。 我喜欢Linq和Sql,并喜欢用本机开发语言表达数据访问逻辑(或一般说来CRUD操作),而不必处理C#和SQL之间的“阻抗不匹配”。例如,要为业务层返回与ObjectDataSource兼容的Event实例列表,请使用: return db.Events.Select(c => new EventData() { EventID = c.EventID, Title = c.Title }) 如果要使用旧的SQL-to-C#构造实现此功能,则必须创建一个Command类,添加EventID参数(使用字符串描述“ @EventID”参数),然后将SQL查询字符串添加到命令类,执行命令,然后使用(cast-type)nwReader [“ FieldName”]拉出每个返回的字段值,并将其分配给我的EventData类(yuck)的新创建实例的成员。 因此,这就是为什么像Linq / SubSonic / etc这样的人。并且我同意。 但是,从更大的角度看,我发现许多错误。我的感觉是,Microsoft也看到了错误,这就是为什么他们杀死Linq to SQL并试图将人们转移到Linq to Entities。只是,我认为微软正在加倍下注。 那么,怎么了? 问题在于,有一些架构宇航员,尤其是Microsoft的宇航员,他们研究了Linq to Sql并意识到这不是一个真正的数据管理工具:在C#中,您仍然无法轻松完成许多事情,他们的目标是修复它。 您会看到这体现在Linq to Entities背后的野心,有关Linq的革命性甚至LinqPad挑战的博客文章中。 而这个问题是在于,它假定SQL的问题。也就是说,为了减轻轻微的不适(SQL和C#之间的阻抗不匹配),Microsoft建议在创可贴(Linq to SQL或类似的东西)就可以的情况下等效于太空服(完全隔离)。 据我所知,开发人员足够聪明,可以掌握关系模型,然后将其智能地应用于开发工作中。实际上,我再说一遍,Linq to SQL,SubSonic等已经太复杂了:学习曲线与掌握SQL本身并没有太大不同。由于在可预见的将来,开发人员必须掌握SQL和关系模型,因此我们现在面临学习两种查询/ CRUD语言的问题。更糟糕的是,Linq通常很难测试(您没有查询窗口),将我们从正在执行的实际工作中删除了一层(生成SQL),并且对SQL构造(例如,最多)的支持非常笨拙日期处理(例如DateDiff),“具有”甚至“分组依据”。 有什么选择?就个人而言,我不需要像Linq to Entities那样的数据访问模型。我希望仅在Visual Studio中弹出一个窗口,输入并验证我的SQL,然后按一个按钮即可生成或补充C#类以封装该调用。由于您已经知道SQL,因此您不希望仅输入以下内容: Select …

5
在LINQ中向实体左加入?
我正在尝试将LINQ用于实体。 我在以下方面遇到问题:我希望它这样做: SELECT T_Benutzer.BE_User ,T_Benutzer_Benutzergruppen.BEBG_BE FROM T_Benutzer LEFT JOIN T_Benutzer_Benutzergruppen ON T_Benutzer_Benutzergruppen.BEBG_BE = T_Benutzer.BE_ID 我最接近的是: var lol = ( from u in Repo.T_Benutzer //where u.BE_ID == 1 from o in Repo.T_Benutzer_Benutzergruppen.DefaultIfEmpty() // on u.BE_ID equals o.BEBG_BE where (u.BE_ID == o.BEBG_BE || o.BEBG_BE == null) //join bg in Repo.T_Benutzergruppen.DefaultIfEmpty() // on …

4
“ LINQ to Entities不支持LINQ表达式节点类型'Invoke'”-烦死了!
稍后在我的EF中,我试图传递一个匿名函数以用作Linq查询的一部分。该函数将传入INT并返回BOOL(u.RelationTypeId为INT)。以下是我的函数的简化版本: public IEnumerable<UserBandRelation> GetBandRelationsByUser(Func<int, bool> relation) { using (var ctx = new OpenGroovesEntities()) { Expression<Func<UsersBand, bool>> predicate = (u) => relation(u.RelationTypeId); var relations = ctx.UsersBands.Where(predicate); // mapping, other stuff, back to business layer return relations.ToList(); } } 但是,我得到上述错误。似乎我通过从函数构建谓词来使所有事情都正确。有任何想法吗?谢谢。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.