2014-09-25 2 views
0

먼저 Entity Framework 5를 먼저 사용하고 있는데 SaveChanges 메서드를 재정의했습니다. SaveChanges에서 EntityState == EntityState.Added 인 엔티티를 식별하려고합니다. (이 작업을 충분히 쉽게 수행 할 수 있습니다.) 그러나 기본 키로 정의 된 엔티티의 모든 열을 식별하고 HasDatabaseGeneratedOption 속성을 DatabaseGeneratedOption.None으로 설정하고 현재 가지고있는 열을 식별하려고합니다. Null 값.Entity Framework SaveChanges의 엔터티 속성을 읽음

데이터베이스에 코드를 통해 수동으로 채워야하는 기본 키로 정의 된 일부 열이 있으므로이 열을 식별해야합니다. SaveChanges에있는이 열의 개체수를 삽입 할 수 있지만 그 개체를 식별하는 방법이 무엇인지 알 수 없습니다.

SaveChanges의 열 정의를 어떻게 쿼리합니까? 데이터 값을 검사하는 방법을 분명히 알고 있습니다.

답변

1

데이터 모델을보고 기본 키를 보유하는 속성을 가져와 원하는 특성이 있는지 확인해야합니다. 예를 보려면 http://weblogs.asp.net/ricardoperes/entity-framework-metadata을 참조하십시오. 그러나 특성을 사용하지 않고 대신 OnModelCreating에서 모델을 사용자 지정하는 경우이 작업은 작동하지 않습니다.

+0

위대한 블로그 게시물! EntityFramework 메타 데이터 모델이 어딘가에 문서화되어 있습니까? 귀하의 예제는 정보를 얻는 방법을 보여주는 훌륭한 예입니다. HasDatabaseGeneratedOption 속성을 찾는 위치를 반드시 알 필요는 없습니다. GetIdProperties의 예제 확장 메소드를 사용하면 ID를 얻습니다. OnModelCreating에서 모델을 커스터마이징하지는 않지만, 엔티티의 모양을 정의하기 위해 Map 클래스를 사용하고 있습니다. 엔티티 맵 클래스가 'HasDatabaseGeneratedOption'을 설정합니다. – codechurn

+0

또한 엔티티 자체의 속성이 아니라면 나중에 사용자 정의 속성을 추가 할 수 없다는 점을 이해하고 있습니까? 엔티티 자체가 아닌 맵 클래스의 속성 일 수 있습니까? – codechurn

+1

그것에 관한 문서가 많지 않아서 두렵습니다. 내 솔루션은 매핑 속성과 함께 작동합니다. PropertyInfo.GetCustomAttributes()를 사용하여 id 속성에서 속성을 가져올 수 있습니다. 원하는 특성은 DatabaseGeneratedAttribute입니다. –

관련 문제