oracle 및 sqlServer에서 작동해야하는 응용 프로그램에서 작업합니다. SqlServer에서는 "비트"를 사용하여 불리언 값을 저장하고 오라클 수 (1)를 저장했습니다.엔티티 프레임 워크 코드와 첫 번째 오라클 공급자가있는 부울 유형
우리는 데이터베이스 필드에 매핑 된 bool 속성이 거의 없다는 것을 발견 했으므로 코드 첫 번째 모델을 만들었습니다.
또한this.ToTable("ZPRUEBABOOLEANO", schema);
this.HasKey<int>(t => t.Numero);
this.Property(t => t.Numero).HasColumnName("NUMERO");
this.Property(t => t.Booleano).HasColumnName("BOOLEANO");
는 자상 한 응용 프로그램 구성 파일에 추가 (단순성을 위해 우리가 추가 DLL을 사용하지 않고 시험을이) : 예를 들어
:로
public partial class ZPruebaBooleano
{
public int Numero { get; set; }
public bool Booleano { get; set; }
}
은 매핑
<oracle.dataaccess.client>
<settings>
<add name="bool" value="edmmapping number(1,0)" />
<add name="byte" value="edmmapping number(3,0)" />
<add name="int16" value="edmmapping number(4,0)" />
<add name="int32" value="edmmapping number(9,0)" />
<add name="int64" value="edmmapping number(18,0)" />
</settings>
</oracle.dataaccess.client>
나는 프로 바이더 팩토리가 모델을 만들 때 그것을 읽었을 것이라고 확신한다. 파일에 매핑 된 형식 이름에 잘못된 항목을 추가하면 예외가 발생합니다.
다른 포럼에서 찾은 것처럼 작동합니다. 하지만 지금은 코드를 포함하여 항상 작동해야하는지 확신 할 수 없습니다.
유형 'Edm.Boolean [null 허용 = 거짓,의 DefaultValue =]' 'Booleano'에서에 : 내가 (어떤 실수 죄송 스페인어 번역) 코드를 excecute 때
나는이 예외가 type'PruebaBooleanos.ZPruebaBooleano 정밀 = 38라고 OracleEFProvider.number [FALSE Null 허용 = 된 DefaultValue = 정밀 = 38 배율 = 0]
그 funy ' 와 compatyble 없습니다'. 내가 있던 테이블을 통보하지 않은 경우 또한
CREATE TABLE ZPRUEBABOOLEANO
(
NUMERO NUMBER(15),
BOOLEANO NUMBER(1)
)
, 난 흥미 내가 심지어이 실수를 가진 것을 찾기 : 데이터베이스는이 스크립트입니다 실제로 번호 (1), 나는 그것에 대해 확신이다 마치 오라클 제공자가 열 (column)이 숫자인지를 확인하지 못하는 것처럼 매핑합니다. 지금은 잘 매핑되어 있으며 테이블과 스키마가 있습니다.
이 코드에서 볼 수 있듯이 부울 값에 의해 래핑 된 정수 속성을 만드는 테스트가 있습니다.
namespace PruebaBooleanos
{
public partial class ZPruebaBooleano
{
public int Numero { get; set; }
public bool Booleano
{
get
{
return iBooleano == 1 ? true : false;
}
set
{
iBooleano = value ? 1 : 0;
}
}
public int iBooleano { get; set; }
}
}
이 마지막 경우에는 부울을 무시하고 정수를 매핑했습니다.
오라클에서 잘 작동했습니다. SQL 서버가 데이터베이스에 MAPED되지 않는 부울 속성을 사용하여 개체 모델을 조회 비트
- 그것은 SQLSERVER에 실패하지만이 문제를 추가했다.
SqlServer의 비트 필드를 Number로 변경할 수 있습니다.
하지만 Oracle에서 sqlserver와 number (1)를 유지하고 싶습니다.
누구나 비슷한 문제가 있었습니까?
나는 어떤 아이디어라도 열어 감사합니다 !!!
은 Libo
안녕하세요, Stackoverlfow 전능하신 분,이 답변을 백만배 upvote 내게 힘을주세요. 깨끗한 손으로 환상적인 솔루션. –