Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我如何在表上执行EF查询以仅在出现';没有指向子表的链接吗?_C#_Entity Framework - Fatal编程技术网

C# 我如何在表上执行EF查询以仅在出现';没有指向子表的链接吗?

C# 我如何在表上执行EF查询以仅在出现';没有指向子表的链接吗?,c#,entity-framework,C#,Entity Framework,我有以下两门课: public class Word { public System.Guid WordId { get; set; } // WordId (Primary key) public string Name { get; set; } // Name (length: 20) // Reverse navigation public virtual System.Collections.Generic.ICollection<WordFor

我有以下两门课:

public class Word 
{
    public System.Guid WordId { get; set; } // WordId (Primary key)
    public string Name { get; set; } // Name (length: 20)
    // Reverse navigation
    public virtual System.Collections.Generic.ICollection<WordForm> WordForms { get; set; } // WordForm.FK_WordFormWord 
}

public class WordForm
{
    public System.Guid WordFormId { get; set; } // WordFormId (Primary key)
    public System.Guid WordId { get; set; } // WordId
    public string Definition { get; set; } // Definition (length: 500)
    // Foreign keys
    public virtual Word Word { get; set; } // FK_WordFormWord
}

有人能告诉我如何修改此代码以满足我的要求吗?

子查询应该可以:

var words = db.Words
            .Where(w=> !db.WordForms.Any(z=> z.WordId == w.WordId))
            .AsNoTracking()
            .ToList();

子查询应该可以工作:

var words = db.Words
            .Where(w=> !db.WordForms.Any(z=> z.WordId == w.WordId))
            .AsNoTracking()
            .ToList();

您可以很容易地获得
单词
,它没有
单词表单
,如下所示:

var words = db.Words
            .Where(W => W.WordForms.Count == 0)
            .ToList();

您可以很容易地获得
单词
,它没有
单词表单
,如下所示:

var words = db.Words
            .Where(W => W.WordForms.Count == 0)
            .ToList();

另一个选项是使用左连接

var words = (from w in db.Words
             join wf in db.WordForms
                 on w.WordId equals wf.WordId into wwf
             from x in wwf.DefaultIfEmpty()
             where x == null
             select w)
             .AsNoTracking()
             .ToList();

另一个选项是使用左连接

var words = (from w in db.Words
             join wf in db.WordForms
                 on w.WordId equals wf.WordId into wwf
             from x in wwf.DefaultIfEmpty()
             where x == null
             select w)
             .AsNoTracking()
             .ToList();

这段代码可以工作,不需要在任何语句中过滤

var words = db.Words.Where(e => !e.WordForms.Any())
    .AsNoTracking()
    .ToList();

这段代码可以工作,不需要在任何语句中过滤

var words = db.Words.Where(e => !e.WordForms.Any())
    .AsNoTracking()
    .ToList();