2017-10-20 228 views
0

我們有一個數據庫優先的Entity Framework 6.1.3項目,該項目正在序列化爲基於Java的高速緩存產品(除了普通的SQL Server持久性以外)。因此,項目中的域類都不能有空的LONG。它們與GemFire不兼容。只能使用正常的LONG。獲取Entity Framework將LONG設置爲零而不需要可爲空的屬性

但是我們的底層SQL Server數據庫(在它的BIGINT列中)有NULL。通常這只是增加一個問號的財產進行處理:

public long? SomeProperty { get; set; } 

在我們的例子中,我們需要一種方法來使實體框架現場沒有問號。該物業需要是一個長期的;如果底層行具有NULL,則實體框架應將其設置爲零。也許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容忍在BIGINT列的NULL無標記屬性爲C#可空?

+0

它說可空的多頭與Gemfire/Geode不兼容?這聽起來不合適。 – rupweb

回答

0

一個實際的做法是,而不是表,創建具有「非空」字段的原始表餵養觀點:

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

由於項目/環境的限制是未知的,這是很難肯定告訴它是否會爲你工作。

相關問題