2012-08-09 4 views
0

내 프로젝트 .NET에서 EF 4 (모델 첫 번째)를 사용 중이며 DateTime 필드에 어려움을 겪고 있습니다. I는 SaveChanges() 사용할 것이다 때DateTime2가 나를 미치게합니다.

이 예외가 발생된다

System.Data.SqlClient.SqlException을 : 날짜 시간 데이터 유형에 DATETIME2 데이터 형식의 변환이 범위를 벗어난 결과 값. 새로운

System.Globalization.CultureInfo enGB = new System.Globalization.CultureInfo("en-GB"); 

하지만 아무 반응이 없습니다 :

내가 사용하려고했습니다. 나는 오늘 밤 그것을 고치지 않으면 내 컴퓨터를 폭발시킬 것이다.

, 저 좀 도와주세요, 내 컴퓨터 = (1 주 여기

성공

없이 그것을 해결하려고 폭발하지 않으려는 것은 내 코드입니다 : 내가 아는

protected void btnSave_Click(object sender, EventArgs e) 
{ 
     int id = Convert.ToInt32(Request.QueryString["id"]); 
     ModeloContainer ctx = new ModeloContainer(); 
     Cliente cli = ctx.Cliente.Where(cl => cl.IdCliente == id).First(); 
     Contrato c = new Contrato(); 

     c.Descricao = this.txtDescricao.Text; 
     c.FaturarPara = this.ddlFaturarPara.SelectedValue; 
     c.Tolerancia = Convert.ToInt32(this.txtSuspenderContratoEm.Text); 
     c.PeriodoPagto = this.ddlPeriodoPagamento.SelectedValue; 

     // DateTime dtExpiracao = this.txtExpiraEm.Text.Trim() == "" ?                  Convert.ToDateTime("01/01/0001") : Convert.ToDateTime(this.txtExpiraEm.Text.Trim()); 
     DateTime dt = DateTime.Now; 
     System.Globalization.CultureInfo enGB = new System.Globalization.CultureInfo("en-GB"); 
     dt = Convert.ToDateTime(dt, enGB); 

     c.ExpiraEm = dt; //Here is the problem! but I no have idea how fix it 

     ctx.AddToContrato(c); 
     ctx.SaveChanges(); 
     this.SalvarServiços(c.IdContrato); 
} 

,이 같은 많은 질문이있다 여기에,하지만 그들 중 누구도 내 문제가 해결되지

내가 텍스트 상자에 다음과 같이 날짜를 삽입합니다 :. 09/08/2012

+0

도움이되지 않는 경우 [이 게시물을보십시오] (http://stackoverflow.com/questions/4259716/datetime2-conversion-in-ef4) 모델을 게시 할 수 있습니까/ –

+3

다른 비 - 귀하의 엔터티에 nullable 'DateTime' 필드가 있습니까? 그렇다면 EF가 해당 칼럼에 1/1/0001을 보내고 있기 때문에 문제의 원인이됩니다. 또한 SQL 프로파일 러를 사용하여 EF가 데이터베이스에 저장하려고하는 값을 확인할 수 있습니다. –

답변

2

내가 어떤 문제가 있다고 생각하지 않습니다 ExpiraEm 열을 사용하십시오.

의심스러운 것은 null이 아닌 다른 날짜/시간 필드가 있고 그 값을 제공하지 않으므로 EF는 01/01/0001을 전달할 것이며 이는 허용되지 않습니다. SQL Server (SQL Server의 최소 허용 날짜는 1753 년 1 월 1 일입니다). 그래서 당신은이 SQL 예외를 얻습니다.

비슷한 상황이 herehere으로 발생했습니다.