我正在尝试创建一个视图,并将其导入Entity Framework 6。 无法导入以下视图,因为两列都可以为空。 (表和列名称已更改,第二列用于计算日期时间列中的第一个月)
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
据我了解,如果两列都不为null,则EF将能够导入 风景。这是对的吗? 如何更改视图以使其工作?
答案 0 :(得分: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。