2014-12-29 3 views
31

저는 Entity Framework 6.1 코드를 먼저 사용하고 있으며 도메인 모델은 아래에 있습니다.코드를 사용하여 문자열 인덱스 처음으로 만들기

class Item 
{ 
    [Index] 
    public string CreatedBy { set; get; } 
} 

마이그레이션을 위해 update-database를 사용할 때 다음 오류가 발생합니다. 그러나 내가 조사한 한 [Index]string에 대한 주석으로 작동해야합니다.

'dbo.Items'테이블의 'CreatedBy'열이 인덱스의 키 열로 사용할 수없는 형식입니다.

답변

68

당신은 VARCHAR (최대)를 사용할 때 일반적으로이 오류가 사용해보십시오 :

[Column(TypeName = "VARCHAR")] 
[StringLength(n)] 
[Index] 
public string CreatedBy { set; get; } 

당신이 EntityTypeConfiguration 일명 매핑을 사용하는 경우

+0

감사. – DarthVader

+0

'[Column (TypeName = "VARCHAR")]'속성은 왜 그런가요? – Zero3

+0

@ Zero3 nvarchar는 유니 코드 (2 바이트/char)이고 varchar는 (1 바이트/char)이 아닙니다. 따라서 필드에 다른 언어 (코드 페이지)가 필요하지 않은 경우 두 배의 공간을 확보 할 수 있습니다. –

4

1 사이 (450), n은 여기서

public class MyPocoEntitiyTypeConfig<T> : EntityTypeConfiguration<T> where T:class 
{ 

} 

public class MyPocoEnt 
{ 
    public virtual string MyProp { get; set; } 
} 

public class MyPocoEntMapping : MyPocoEntitiyTypeConfig<MyPocoEnt> 
{ 
    public MyPocoEntMapping() 
    { 
      Property(x => x.MyProp).HasMaxLength(300); 
      Property(x => x.MyProp).HasColumnAnnotation("Index", new IndexAnnotation(new IndexAttribute("MyProp") { IsUnique = true })); 
     } 
    } 
} 
관련 문제