2012-07-31 5 views
2

나는 Asp.net MVC 3을 사용하는 프로젝트에서 작업하고 있으며 Oracle 11g 데이터베이스를 백엔드로 사용할 계획입니다.ASP.Net MVC 3 with Oracle

오라클 서버에 문제없이 액세스 할 수 있었고 데이터가 html 테이블에 성공적으로로드되었습니다.

레코드를 추가, 편집 또는 삭제하려고하면 문제가 발생합니다. 나는 그것이 매우 간단한 문제라고 믿는다. 그러나 지금까지, 나는 그것을 이해할 수 없었다. 다음의 간단한 모델이 사용됩니다

class Country 
{ 
    public int CountryId { get; set; } 
    public string CountryName { get; set; } 
} 

CountryId의의 feild은 내가이 SQL 서버 정수로 작동합니다 생각으로 번호 (10)를 사용하여 Oracle에서 만들었습니다. 그러나 예외가 제기되어 Edm.decimal로 값을 사용할 수 없다는 것을 나타냅니다!

NUMBER (19)으로 만들려고 시도했지만 CountryId를 길게 변경했지만 여전히 동일한 예외가 발생했습니다.

오라클과 함께 asp.net mvc를 사용하는 오픈 소스 프로젝트를 검색하는 데 오랜 시간을 보냈지만 아무 것도 찾을 수 없었습니다!

오라클이 정수를 지원하지 않는 이유는 무엇입니까? MVC 프로젝트에서 예상대로 작동하도록 만드는 방법은 무엇입니까?

답변

0

소수점 또는 Int32를 사용해 보셨나요? 온라인에서 찾은 일부 문서에서 제안 사항을 얻고 있습니다 : http://docs.oracle.com/cd/E11882_01/win.112/e18754/featLINQ.htm. 이것이 어떻게 당신에게 효과가 있는지 알려주십시오. Oracle Data Type Mappings 가입일

+0

나는 그것을 시도하고 작동하지 않았다입니다. – IoC

+0

@LolCoder 대답에 대해서는 값 유형이 Int64로 설정 될 수 있다고 말하는 것 같습니다. 해볼 수 있니? 데이터베이스의 해당 열에서 NULL 값을 허용합니까? 그렇다면 어쩌면 int?, decimal ?, long ?, Int32? 또는 Int64? '?' 값이 null 일 수 있음을 의미합니다. 감사. –

5

,

이 데이터 형식은 NUMBER (38) 데이터 형식에 대한 별칭이고 OracleDataReader가 System.Decimal 또는 OracleNumber 아닌 정수 값을 반환하도록 설계 이다. .NET Framework 데이터 형식을 사용하면 오버플로가 발생할 수 있습니다.

그래서, 당신은 오라클의 NUMBER 데이터 유형을 지원하기 위해 .NET Framework의 decimal 데이터 유형을 사용해야합니다.

당신은 다음과 같은 방법으로 데이터 타입 매핑 한 경우 그것은 더 나은 것 :

[.NET: Int32] = [Oracle:NUMBER(2)..NUMBER(9)*] 
[.NET: Int64] = [Oracle:NUMBER(10)..NUMBER(18)*] 
[.NET: Double] = [Oracle:NUMBER(x, 0)..NUMBER(x, 15)*] 
[.NET: Double] = [Oracle: FLOAT] 
[.NET: Decimal] = [Oracle:NUMBER] 
+0

C# 정수를 지원해야합니까, Oracle 데이터 형식을 사용해야합니까? – IoC

+0

내 업데이트 된 답변보기 .... –

+0

그 코드를 어디에 넣어야합니까? – IoC