小编Dio*_* V.的帖子

"对象引用未设置为对象的实例" - 但什么都不为null?

是的,你可能会想; "上帝,另一个?"

是的,另一个.

"你调用的对象是空的."

我最近一直在使用EF6,经过一段时间的开发,我发现需要更多的优化.Alot已经重新设计没有问题,但似乎我无法弄清楚这个.

在我的应用程序中,我一直在使用这段伪代码从数据库中获取项目.

DbContext context = new DbContext();

public IEnumerable<string> GetExistingNames(IEnumerable<string> names)
{
    foreach(string name in names)
    {
        string existingName = context.Names.Where(n => n.Name == name).FirstOrDefault();
        if(existingName == null) continue;
        yield return existingName;
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这DbContext只是为了澄清.它在需要时被处理掉.

这种方法"有效",但这意味着,如果我有20个名字要查找,我会打到数据库大约20次.哎哟!

因此,我开始寻找实现单个查询的方法.我找到了一种方法,但它并没有真正发挥作用.这是我目前的做法;

public IEnumerable<string> GetExistingNames(ICollection<string> names)
{
    IQueryable<Names> query = context.Names.Where(n => names.Contains(n.Name));
    if(query == null) yield break;
    foreach(var name in query)
    {
        yield return name.Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该转化为SELECT ... FROM Names WHERE ... IN (...).但是,我的应用程序一foreach(var …

c# dbcontext entity-framework-6

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

dbcontext ×1

entity-framework-6 ×1