EF 자체에서 엔티티를로드 할 때 속성을 설정해야하며 코드 퍼스트는 속성에 공용 설정자가있는 경우에만이 작업을 수행 할 수 있기 때문에 개인 수식어를 사용할 수 없습니다 (개인 설정자가 가능한 EDMX와 달리 (1), (2)) .
CreatedDate
을 DatabaseGeneratedOption.Identity
으로, AmendDate
을 DatabaseGeneratedOption.Computed
으로 표시해야합니다. 이렇게하면 EF가 데이터베이스에서 데이터를 올바르게로드하고, 삽입 또는 업데이트 후에 데이터를 다시로드하여 애플리케이션에서 엔티티가 최신 상태가되도록하는 동시에 애플리케이션의 값을 변경할 수 없도록합니다. 응용 프로그램이 절대로 데이터베이스로 전달되지 않습니다. 객체 지향 관점에서 볼 때 매우 좋은 솔루션은 아니지만 기능면에서 볼 때 원하는 것입니다.
당신은 데이터 주석과 중 하나를 수행 할 수 있습니다
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public DateTime CreatedDate { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime AmendDate { get; set; }
또는 파생 된 상황에서 OnModelCreating
재정에 능통 API와 함께 : 빠른 응답을위한
modelBuilder.Entity<YourEntity>()
.Property(e => e.CreatedDate)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
modelBuilder.Entity<YourEntity>()
.Property(e => e.AmendDate)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed);
감사합니다. DatabaseGeneratedOption.Identity와 DatabaseGeneratedOption.Computed의 차이점은 무엇입니까? 나는 이것에 관해 웹에서 많은 세부 사항을 발견하는 것 같다. thx 편집 : 내 대답을 가지고 해달라고 대답 : http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.databasegeneratedoption(v=vs.103).aspx. 나는 그것이 많은 감사가 어떻게되는지 알려줄거야 – daehaai
그게 문제를 해결했습니다. 많은 감사합니다 – daehaai
내가 [업데이트 - 데이터베이스 : CreatedDate 속성에 대한 DatebaseGenerated (DatabaseGeneratedOption.Identity)] 특성을 가져 왔는데 'CreatedDate'ID 유형이 int, bigint, smallint, tinyint 또는 10 진수이거나 숫자 여야합니다. 0의 스케일을 가지고, 에 제약을 가하면 null이 될 수 없다. – koraytaylan