【问题标题】:MySql, Entity Framework, Inner Joins with null checks generatedMySql,实体框架,生成空检查的内部联接
【发布时间】:2010-07-28 16:18:31
【问题描述】:

我玩过实体框架和 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”条件?

谢谢,

鲍勃

【问题讨论】:

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


    【解决方案1】:
    1. 生成 SQL 的是提供程序,而不是 EF。
    2. 无论如何查询都是错误的。 It's generally wrong to use join,这个连接所做的只是将结果限制为有空缺的广告,你说它无论如何都是不可为空的。

    【讨论】:

    • 粉碎-谢谢克雷格。使用关系而不是连接删除了空检查。仍然不知道为什么会为非空关系生成空检查
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多