2017-10-20 1 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; } 

, 우리는 물음표없이 라이브 엔티티 프레임 워크를 만들 수있는 방법이 필요합니다. 속성은 직선형 LONG이어야합니다. 기본 행에 NULL이 있으면 Entity Framework에서이를 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

nullable long은 Gemfire/Geode와 호환되지 않는다고하는 곳은 어디입니까? 그건 나에게 맞는 소리는 아니야. – rupweb

답변

0

한 실용적인 접근이 "null이 아닌"필드를 갖는 원래의 테이블에서 먹이보기 만드는 대신 테이블입니다 :

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

프로젝트의/환경의 한계를 알 수 있기 때문에를, 그것은 확실히를하기 어렵다 그것이 당신을 위해 작동하는지 말해.

관련 문제