2011-03-15 3 views
0

EF4 Code First (CTP5)를 사용하여 데이터베이스를 생성하고 DataAnnotations를 사용하여 생성 된 DB 스키마를 제어하려고합니다. [Required] 속성을 사용하면 열은 NOT NULL로 올바르게 생성되지만 [StringLength (50)] 특성을 사용하려고하면 모든 열이 NVarChar (max)로 생성됩니다. 여기 EF4 코드를 처음 사용할 때 생성 된 nvarchar 열의 길이를 어떻게 제어합니까?

은 (간체) 내 clases 중 하나에 대한 코드의 조각이다 그래서 당신이 내 문제를 볼 수 있습니다

public class Person 
{ 
    public int PersonID { get; set; } 

    // This property is generated as NVarChar(max) NOT NULL 
    // I prefer it be NVarChar(50) NOT NULL 
    [Required(ErrorMessage="Please enter a first name")] 
    [StringLength(50, ErrorMessage="First name is too long")] 
    public string FirstName { get; set; } 
} 

에서 [StringLength] 속성이 작동하지 않는 경우을은을 제어하는 ​​또 다른 방법이있다 생성 된 nvarchar 열 길이?

감사합니다,
브렌트 스튜어트

+0

이 데이터 주석이 저에게 효과적이기 때문에 무언가를 잘못하고 있어야합니다. 'OnModelCreating'에서 어떤 것을 매핑합니까? 데이터 주석을 추가 한 후 데이터베이스를 다시 만들었습니까? –

+0

정상적으로 작동하는지 확인해 주셔서 감사합니다. 그 사실을 알게 된 후, 필자는 도구를 확인하기 위해 LINQPad가 이러한 열을 올바르게보고하지 않는다는 것을 발견했습니다 (CE4 데이터베이스). WebMatrix를 사용하여 열 유형을 확인 했으므로 올바르게 작성되었습니다. 다시 한번 감사드립니다. –

+0

다른 사람에게 유용 할 수 있으며 주석에 포함되어서는 안되기 때문에 자신의 질문을 삭제하거나 더 잘 대답 할 수 있습니다. –

답변

0

가 나는 accuratly 내 SQL 서버 CE 4 데이터베이스의 열 유형을보고하지 않은 곳에 내가 경험하고 있었다 문제가 LINQPad 버그로 인해 발생 된 것으로 나타났다. [StringLength] 속성은 필수적으로 외형 적으로 작동했습니다.

관련 문제