2016-12-14 17 views
0

ビューを作成してEntity Framework 6にインポートしようとしています。 両方の列がNULL可能なので、次のビューはインポートできません。両方の列がNULLでなかった場合 限り私は理解しnull可能な列からnotl NULL列を含むSQLビューを作成する

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 

(表名と列名が変更され、2番目の列はdatetime列から月の最初を算出することを意図している)、EFができるようになりますインポート ビュー。それが正しいか? この作業を行うためにビューを変更するにはどうすればよいですか?

+0

'ISNULL(a.sometext、 '')Col1'を試してください。 nullレコードではないにもかかわらず、基になるカラムはnullのままです。 –

+0

ありがとう!出来た! – user3109098

答えて

0

結果の式をnull不可能にします。 SQL Serverは、ISNULL()という関数でこれを行います(ただし、COALESCE()ではありません)。だから、あなたが行うことができます。いずれかの引数がNULL可能でない場合

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()は非NULL可能です。 COALESCE()では、この属性を継承するために、すべての引数がnull不可能である必要があります。

これはドキュメントでは見つけることが難しいです。トピックを説明しているarticleがあります。

関連する問題