1

Fluent API 및 Entity Framework 5 Code First를 사용하여 필드에 지정된 maxlength 값을 검색해야합니다.런타임시 Fluent API 매핑 사양에서 MaxLength를 얻는 방법은 무엇입니까?

나는 MetadataWorkspace를 사용하는 몇 가지 예제를 보았지만 Fluent API를 사용할 때는 작동하지 않습니다. 예를 들어 , 나는이 코드를 시도했지만 MaxLenght의 값은 항상 널 :

ObjectContext.MetadataWorkspace.GetItem<GlobalItem>(typeof(TEntity).FullName, DataSpace.OSpace).MetadataProperties[field].TypeUsage.Facets["MaxLength"].Value 

나는 다음과 같은 필요한 속성에 대한 코드를 가지고있는 유창함 API 구성 파일 내부 : 나는 알고

Property(t => t.Name).HasMaxLength(50); 

을 해당 필드에 50자가 넘는 개체를 저장하려고하면 매핑이 실패합니다.

  1. 유창함 API를 사용하여 바 속성에 대해 정의 된 최대 길이 값을 가져 새로운 푸 객체
  2. 만들기 :

    난 그냥 몇 가지 관점들에게 목표를 제공하는 것은 그러나 maxlenght 값을 얻기위한 지침이 필요합니다.

  3. Bar에 할당 할 문자열에 maxlength를 기준으로 특정 규칙을 적용합니다.
  4. 저장하십시오.

미리 감사드립니다.

+0

당신은 우리가 당신을 위해 그것을 쓰길 원합니까 ??? –

+0

그럴 필요는 없습니다. 라이브러리가 maxlength 값을 얻기 위해 사용할 수있는 지침이 필요합니다. 코드는 이미 해당 부분을 제외하고 완료되었습니다. 방금 질문을 수정하여 명확하게했습니다. 감사. – Kakaroto

+0

'하지만 Fluent API를 사용할 때는 작동하지 않습니다.'무엇이 작동하지 않습니까? –

답변

0

스토리지 모델을 사용해야합니다. 열거 형 DataSpace에서 docu를 확인하십시오. EntityType 항목을 사용하십시오.

[TestMethod] 
    public void EFToolsTest() { 

     var context = new BosMasterDbContext("MYDBCONTEXT"); 
     ObjectContext objContext = ((IObjectContextAdapter)context).ObjectContext; 
     MetadataWorkspace workspace = objContext.MetadataWorkspace; 

     var xyz = workspace.GetItems<EntityType>(DataSpace.SSpace); 
     foreach (var ET in xyz) { 
      foreach (var sp in ET.Properties) { 
       Debug.WriteLine(sp.Name + ":" + sp.MaxLength); 

       } 
      } 
     } 
+0

다른 버전 (EF 5.0 사용)이 있지만 사용할 수 있습니다 (sp.TypeUsage.Facets.Contains ("MaxLength")? sp.TypeUsage.Facets [ "MaxLength"]. 값 : string.Empty) get 최대 길이. 컴파일러는 "sp.MaxLength"를 허용하지 않습니다. –

+0

이 답변은 개체 컨텍스트를 삭제하는 엔티티 프레임 워크의 미래에 문제가 있습니다. –