当前位置: 首页 > 编程语言 > C#

实体框架,所有方法链接共享

时间:2023-04-10 18:04:40 C#

实体框架。所有方法链接这两种查询上下文的方式有什么区别吗?公司公司=base.context.Firms.Where(f=>f.SomeId==someId).Where(f=>f.AnotherId==anotherId).FirstOrDefault();公司firm=base.context.Firms.Where(f=>f.SomeId==someId&&f.AnotherId==anotherId).FirstOrDefault();似乎链接与AND条件完全相同。我不相信您可以链接OR语句。是否有理由偏爱其中一个,或者更好/更有效的情况?它们应该产生相同的最终结果(如果我没记错的话),但我发现第二个更具可读性并且更好地显示了最初的意图。更新我刚刚使用LINQPad验证了上述声明。事实上,这两个查询生成相同的SQL。例如:context.SomeTable.Where(c=>c.ParentId==null).Where(c=>c.Name.Contains("F")).Select(c=>c.Name);生产:SELECT[t0].[Name]FROM[SomeTable]AS[t0]WHERE([t0].[Name]LIKE@p0)AND([t0].[ParentId]ISNULL)这是由以下人员生成的SQL:context.SomeTable.Where(c=>c.ParentId==null&&c.Name.Contains("F")).Select(c=>c.Name);你也可以压缩更多的东西(我认为这个和上面的原因一样更合适):varfirm=base.context.Firms.FirstOrDefault(f=>f.SomeId==someId&&f.AnotherId==anotherId);我的猜测是,只要您在IQueryable(可能是您的上下文集合)中工作,就可以使用带有完整谓词子句的链式扩展来实现同样的效果。这是因为IQueryable允许延迟执行并因此在幕后生成相同的SQL。你可以通过代码调试,看到每段代码产生的SQL。我猜它变成了相同的查询。以上就是C#学习教程:实体框架。所有方法链接分享的所有内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: