Entity Framework에서 tinyint(1)를 sbyte로 인식 시키고 싶을 경우의 해결 방법

Entity Framework에서 tinyint(1)를 sbyte로 인식 시키고 싶을 경우의 해결 방법

1. config 파일을 수정

Web.config 또는 App.config의 에 “TreatTinyAsBoolean=false”를 추가합니다.

ex)

<connectionStrings>
    <add name="DbEntities" connectionString="metadata=res://*/Entities.DbModel.csdl|res://*/Entities.DbModel.ssdl|res://*/Entities.DbModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=servername;user id=user;password=password;Charset=utf8;TreatTinyAsBoolean=false;persistsecurityinfo=True;database=db;" providerName="System.Data.EntityClient" />
</connectionStrings>

2. DB의 edmx 파일을 수정

SSDL content 부분의 bool를 tinyint로 수정합니다.

그리고 CSDL content 부분의 Boolean을 SByte로 수정합니다.

현재(2016.12) Web.config의 설정만으로 edmx가 자동으로 대응해 주는 방법은 없어서 exmd 파일에서 해당 컬럼과 모델 항목 설정을 일일이 수정해 줄 필요가 있습니다. 그리고 edmx에 변경이 발생할 때마다 (테이블의 추가/변경/삭제 등) 기존의 수동 설정은 새로 리셋되기 때문에 갱신 할때마다 설정을 수정하지 않으면 안됩니다.

처음부터 새로 DB를 구축할때 Entity Framework를 의식해서 속성 설정을 해 주면 문제가 없지만, 낡은 DB에다 함부로 손을 대지 못하는 상태면 어쩔 수 없습니다…

Visual Studio에서 edmx 파일 수정 방법

1. 수정할 edmx 파일을 선택하고 마우스의 오른쪽 버튼을 클릭합니다.

2.「Open With…」>「XML (Text) Editor」를 선택해서 파일을 엽니다.

3. XML (Text) Editor로 edmx 파일이 표시 되므로 수정 하면 됩니다.

참고 사이트

Entity Framework in .NET and MySQL tinymce(1) problem

Pie's Tech Note

생계형 개발자의 메모장

comments powered by Disqus

    rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora