2012-08-13 3 views
2

이전에이 질문을 읽었을 것입니다. 하지만, 적어도 내 검색에서 다음과 같은 질문을받을 때마다 : https://stackoverflow.com/a/4017148/219838가 튀어 나옵니다. 대답은 완벽하지만 한 시나리오를 다루지는 않습니다. DBA가 tinyint 컬럼을 사용하기로 결정한 경우 (비트 컬럼은 인덱스 가능하지 않음) 부울을 나타 내기 위해 선택하면 세계의 어떤 것도 그를 바꿀 수 없습니까?Entity Framework에서 tinyint를 boolean으로 매핑

부울 값과 바이트 값의 차이점을 이해합니다. 그러나 나는 신경 쓰지 않는다! 내가 알아야 할 것은 : tinyint 컬럼을 바이트가 아닌 boolean으로 매핑하는 해결 방법이 있습니까?

나는 못생긴 사람이 여기에 설명 발견 http://www.saulovallory.com/how-to-map-byte-columns-to-bool-in-entityframework하지만 유창한 매핑하지 작업을 수행합니다. 그리고 지금 나는 필요한 것을 필요로합니다.

+0

@LukeMcGregor 내 질문에 해당 질문에 대한 링크가 있습니다. 나는 특별히 거기에 제공된 것과 다른 해결책을 요구하고있다. (사실 그곳의 해답은 전혀 문제에 대한 해결책을 제공하지 못합니다. 주제에 대한 설명 일뿐입니다) – svallory

+0

스토리지 모델을 직접 업데이트하고 유형을 bool로 변경하여 tinyint (1)을 부울 값에 매핑 할 수있었습니다. 예 : sak

+0

@svallory이 문제에 대한 해결책이 있습니까? Telerik Open Access에서 EF Core로 전환 중이며 OpenAccess는 bool 값에 tinyint를 사용하고 있습니다. 좋은 해결책을 찾으면 듣기 좋을 것입니다. – marvstar

답변

1

EF는 nHibernate에서 IUserType과 같은 사용자 지정 형식 변환기를 만들지 않았습니다. 가능한 해결 방법은 byte 유형의 일치하는 속성에 열을 매핑하고 변환 논리가있는 다른 bool 속성을 갖는 것입니다. 이 속성은 매핑 된 속성이 아니기 때문에 LINQ 쿼리에서 사용할 수 없습니다.

public class MyClass 
{ 
    public byte DatabaseColumnName { get; set; } 

    [NotMapped] 
    public bool DomainPropertyName 
    { 
     get 
     { 
      //conversion logic using DatabaseColumnName 
     } 
     set 
     { 
      //conversion logic using DatabaseColumnName 
     } 
} 
+0

내 블로그에 올린 것과 정확히 똑같은 해결책이지만 주석을 사용하는 것입니다. 내 모델에 두 개의 "동일한"속성을 갖는 것이 좋지 않습니다. 저장, 생성 된 SQL 또는 "ValueTranslator"일종의 제공과 같은 것을 할 수 있기를 바랬습니다. – svallory

관련 문제