2017-10-20 8 views
0

通常のSQL Server永続性に加えて、Javaベースのキャッシュ製品にシリアル化するデータベースファーストEntity Framework 6.1.3プロジェクトがあります。その結果、プロジェクト内のどのドメインクラスもNULL値可能なLONGを持つことはできません。それらはGemFireと互換性がありません。通常のLONGのみ使用できます。null可能なプロパティを要求する代わりに、LONGを0に設定するEntity Frameworkの取得

しかし、基になるSQL Serverデータベース(BIGINT列)にはNULLがあります。通常、これはただのプロパティに疑問符を追加することによって処理されるだろう:私たちの場合は

public long? SomeProperty { get; set; } 

、我々は疑問符なしでは生きてEntity Frameworkのを作るための方法が必要です。プロパティはストレートLONGである必要があります。 Entity Frameworkは、基になる行にNULLがある場合は、その値を0に設定する必要があります。おそらく、EFの流暢なAPIがこれを行う方法を提供するでしょうか? (とにかく、書かれたもの)は動作しません言うこと

Property(t => t.SomeProperty).HasColumnName("SomeProperty").IsOptional(); 

言うまでもなく、私はこのような何かを描いています。私はまだ、次の例外を取得:

The 'SomeProperty' property on 'MyDomainClass' could not be set to a 'null' value. You must set this property to a non-null value of type 'System.Int64'. 

誰かがEFは、C#でnullとしてプロパティをマークせずにBIGINT列内のNULLを許容するために取得する方法を知っていますか?

+0

Null可能なロングはGemfire/Geodeと互換性がないと言いますか?それは私には分かりません。 – rupweb

答えて

0

一つの実用的なアプローチではなく、テーブルの、ある、「NOT NULL」フィールドを持つ元のテーブルから送りビューを作成します。

CREATE VIEW MY_TABLE_VIEW 
AS 
    ... 
    ISNULL(SOME_PROPERTY, 0) AS SOME_PROPERTY 
    ... 

プロジェクトの/環境の制限が不明であるので、それは確かに難しいですそれがあなたのために働くかどうかを教えてください。

関連する問題