生成空检查的MySql,实体框架,内部联接

时间:2010-07-28 16:18:31

标签: mysql entity-framework linq-to-entities

我玩过Entity Framework和MySQL驱动程序。如果这是一个愚蠢的问题,请原谅。表格广告的空缺PK为FK。两个字段都标记为NOT NULL。我正在进行简单的加入:

 var qry = (from vacancy in context.vacancies
                       join advert in context.adverts on vacancy.id equals advert.vacancies.id
                       where advert.status == 1
                       select
                         new
                             {
                                 Id = advert.id
                             })
                            ;

这将生成以下SQL:

SELECT 1 AS C1, Extent2.id FROM vacancies AS Extent1 
    INNER JOIN adverts AS Extent2 ON (Extent1.id = Extent2.vacancy_id) OR ((Extent1.id IS  NULL) AND (Extent2.vacancy_id IS  NULL))
    WHERE 1 = Extent2.status

当列未标记为可空时,为什么EF为连接生成“IS NULL”条件?

谢谢,

鲍勃

1 个答案:

答案 0 :(得分:0)

  1. 这是生成SQL的提供者,而不是EF。
  2. 无论如何,查询都是错误的。 It's generally wrong to use join,并且所有这些加入确实会将结果限制为具有空缺的广告,无论如何您都认为该广告是不可空的。