2010-01-19 1 views
0

내가 개체를 업데이트하려고 노력하고 받고 있어요 :asp.net MVC : 엔티티 프레임 워크와 SQLDateTimeOverflow 문제

SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM. 

이 날짜 시간 개체 개체에 두 개의 필드는, 그들이 설정하고

>? obj.created_date 
{1/13/2010 4:02:47 PM} 
    Date: {1/13/2010 12:00:00 AM} 
    Day: 13 
    DayOfWeek: Wednesday 
    DayOfYear: 13 
    Hour: 16 
    Kind: Unspecified 
    Millisecond: 817 
    Minute: 2 
    Month: 1 
    Second: 47 
    Ticks: 633989953678170000 
    TimeOfDay: {16:02:47.8170000} 
    Year: 2010 
>? obj.modified_date 
{1/19/2010 12:20:50 PM} 
    Date: {1/19/2010 12:00:00 AM} 
    Day: 19 
    DayOfWeek: Tuesday 
    DayOfYear: 19 
    Hour: 12 
    Kind: Local 
    Millisecond: 333 
    Minute: 20 
    Month: 1 
    Second: 50 
    Ticks: 633995004503331818 
    TimeOfDay: {12:20:50.3331818} 
    Year: 2010 

어떤 생각이 무슨 : 나는 물체를 볼 때 그 모든 것을 제외하고

obj.created_date = DateTime.Now; 
    obj.modified_date = DateTime.Now; 

합리적인 보인다 에? 데이터베이스에서 필드를 읽은 다음 변경없이 다시 저장하려고하면 오류가 발생합니다. 다른 클래스는 문제가 없으며이 오류를 설명하는 차이점을 볼 수 없습니다.

나는 변경하지, 내 Web.config의에

<globalization culture="en-US" /> 

을 추가했습니다.

이러한 문제는 여기에 무슨 일이 일어 났는지입니다, 내 로컬 디바이스에

+0

개체를 액세스하고 저장할 때 수행중인 작업을 정확하게 게시 할 수 있습니까? – bobwah

+2

방금 ​​추측 - 다른 DateTime 속성이 어딘가에 있으며 초기화되지 않았을 수 있으므로 0/0/0001로 설정되어 있습니까?). 당신이 보여주고있는 두 가지는 괜찮습니다. 그것들은 확실히 어떤 문제도 일으키지 않습니다. –

답변

0

OK입니다. marc_s는 올바른 아이디어를 가지고있었습니다. 있다

바인더 처리 업데이트했다 :

TryUpdateModel(editItem, new string[] { "LookupTable", "TextField1", "TextField2" }); 

내가 TryUpdateModel 호출에서 "LookupTable의"를 제거하고 대신에 바인더의 값을 처리 : 분명히,

var fkid = Convert.ToInt32(controllerContext.HttpContext.Request.Form["LookupTable.ID"]); 
    EntityKey ek = new EntityKey("entities.LookupTable", "ID", fkid); 
    obj.LookupTableReference.EntityKey = ek; 

EF는 어떤 이유로 LookupTable 값을 업데이트하려고했습니다.