7

StoreGeneratedPattern="Computed" 하지만 사람이 읽을 수있는 형식으로 TimeStamp를 표시 할 수는 없습니다.Entity Framework에서 계산 된 DateTime 열을 사용하면 <code>timestamp</code> 유형의 열에서 완벽하게 작동합니다.

그래서 SQL 타임 스탬프를 단순히 DateTime으로 구문 분석 할 수 없으므로 "이 행이 수정 된 시간 : {TimeStamp}"사용자를 표시 할 수 없습니다.

이제 DateTime 열의 계산 열을 만들 수도있어서 수동으로 설정할 필요가 없습니까? 일부 사용자 정말 단순히 자신의 컴퓨터 시간을 변경하여, 뭔가 나쁜 일을하고 싶었다 경우 myEntity.LastModification = DateTime.Now

는 꽤 오류가 발생하기 쉬운 것입니다 언급 할 필요가 없을 것입니다.

+0

테크노가 데이터베이스 인 경우 트리거는 어떻게됩니까? 또는 코드를 처음 사용할 경우 상속 및 사용자 지정 작업을 저장합니다 (하지만 생각하지는 않습니다). 그런데 웹 앱입니까? 그렇다면 DateTime.Now는 클라이언트의 datetime이 아닌 웹 서버 datetime이됩니다. –

+0

@ RaphaëlAlthaus 그것은 WPF 응용 프로그램입니다 ... 그리고 edmx 모델 옆에 트리거를 유지하는 것이 정말 멋지다고 생각합니다. 그렇다면 나는'DateTime.Now' 할당에 충실 할 것입니다 : p – SeToY

+0

Ok. 그럼 먼저 모델을 만드시겠습니까? 당신이 그것을 보셨나요 : http://stackoverflow.com/questions/6029766/how-to-create-update-a-lastmodified-field-in-ef-code-first? 먼저 코드를 작성했지만 코드 생성기를 변경하여 클래스가 원하는 인터페이스를 구현하도록 할 수 있습니다. –

답변

1

예, 여기에 설명 : Is there a way to specify default values for columns? Some DateTime columns in my database are set to getdate(), but the EF is unaware of these default values

추출 : (값 만 삽입에 계산 된 경우) 또는 신원에 StoreGeneratedPattern을 설정하면

... 계산 된 (가 계산되는 경우) 모든 갱신에 ...

편집을하면 SaveChanges를 호출 할 때 다음 EF는 데이터베이스에서 생성 된 값을 얻을 것이다 당신의 개체를 업데이트 다시 그것을 가지고 : DB 서버 측 Modifi를 만들기 위해 양이온 날짜가 업데이트되었습니다.이 대답은 https://stackoverflow.com/a/8461681/1679310입니다. Computed 설정은 다시로드를 수행합니다

+0

글쎄, 여기에서 물어보기 전에 Google에서 이것을 확인한 후 DateTime 열을 '계산 됨'으로 설정해도 변경되지 않습니다. 삽입 또는 업데이트시 열. – SeToY

+0

'Identity'만으로는 충분하지 않습니다. 왜냐하면 LastModification은 모든 수정과 삽입시에 변경되지 않기 때문입니다. – SeToY

+0

아, 이제 아이덴티티가 창조를 위해 일해야한다. (당신이 옳다.) 위의 링크에서 볼 수 있듯이, 수정을 위해서는 그 날짜를 바꾸기위한 방아쇠가 필요하다. –