2011-02-15 4 views

답변

25

속성에 대한 특성을 사용하는 대신 유창한 인터페이스를 사용하여 엔터티를 작성하는 경우 System.ComponentModel.DataAnnotations 네임 스페이스의 EntityFramework.dll에있는 DatabaseGenerationOption 클래스를 사용할 수 있습니다. 나는 그것을 테스트하지 않았지만 다음과 같이 보일 것이다.

modelBuilder 
    .Entity<Foo>() 
    .Property(f => f.Id) 
    .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None); 
+0

나는이 API 선택을 싫어, 그래서 나는 PrimitivePropertyConfiguration .Identity (isIdentity : false)를 이러한 확장 방법을 쓰고, .Computed는() –

41

그 답은 나를 위해 (EF 4.1에서) 작동하지 않았다.

이 일을하려면, 내 키 컬럼에 DatabaseGenerated 속성을 추가 :이 사람을 도움이

public class FacebookUser 
{ 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public long FacebookId { get; set; } 

    // ... 
} 

희망을.

+0

감사합니다, 그것은 나를 위해 일했습니다. – Nestor

+0

대용품을 작성했으며 스키마 선언이 클래스 선언 내에서 유지되었지만 보편적 빌드 메소드의 어딘가로 이동하지 않았습니다. IMHO를보다 쉽게 ​​찾을 수있게 해줍니다. – Amadiere

+0

왜 이것이 작동하지만 @MattHamilton의 유창한 API 응답은 그렇지 않은지 잘 모르겠지만 그렇게했습니다. 고마워요 :) – jwatts1980

8

작은 변경

public class User 
{ 

    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 

    public int ID { get; set; } 

    // Rest of the code 
}