2016-12-14 81 views
0

我试图创建一个视图并将其导入到实体框架6中。 由于两列都可以为空,因此无法导入以下视图。 (表和列名发生了变化,第二列是用于计算的第一个月从datetime列)创建一个SQL视图,其中包含来自可空列的notl空列

CREATE VIEW MyView AS 
SELECT DISTINCT a.sometext Col1, DATEADD(m, DATEDIFF(m, 0, b.somedate), 0) Col2 
FROM Table1 a INNER JOIN Table2 b ON a.Id = b.Id 
WHERE a.sometext IS NOT NULL AND b.somedate IS NOT NULL 

据我了解,如果两个列不为空,EF就能进口 的看法。这是对的吗? 如何更改视图以使其工作?

+0

尝试'ISNULL(a.sometext,'')Col1'。即使您已将其限制为非空记录,底层列仍然可以为空。 –

+0

谢谢!有效! – user3109098

回答

0

您希望生成的表达式不可为空。 SQL Server通过函数ISNULL()执行此操作(但不包括COALESCE())。所以,你可以这样做:

CREATE VIEW MyView AS 
    SELECT DISTINCT ISNULL(a.sometext, '') as Col1, 
      ISNULL(DATEADD(month, DATEDIFF(mont, 0, b.somedate), 0), GETDATE()) as Col2 
    FROM Table1 a INNER JOIN 
     Table2 b 
     ON a.Id = b.Id 
    WHERE a.sometext IS NOT NULL AND b.somedate IS NOT NULL; 

ISNULL()是不可为空,如果任何参数不可为空。 COALESCE()要求所有参数不可空,以继承此属性。

这很难在文档中找到。以下是讨论该主题的article

相关问题