2013-05-22 3 views
1

오류는 SQL Server db 유형의 필드 유형에 따라 다릅니다. 이 필드는 Nullable이 아니며 기본 속성을가집니다. 이 필드에 JsonIgnore 특성을 추가하려고 시도했지만 메타 데이터에 여전히 나타나며이 오류가 있습니다. breeze/BreezeMyPlace/Metadata에 대한 메타 데이터 가져 오기가 실패했습니다. 반환 된 메타 데이터를 처리 할 수 ​​없습니다. null이 아닌 DataProperty는 null defaultValue를 가질 수 없습니다. 이름 : 정의되지 않음. "Breeze for ASP.NET 웹 API 프로젝트 v. 1.3.3", Entity Framework 5.0, JSon.NET 5.0.5 등의 Nuget 패키지를 사용하고 있습니다. 이 필드의 직렬화를 방지하려면 어떻게합니까? 감사Breeze : 'null 값이 아닌 DataProperty는 null defaultValue를 가질 수 없습니다. 이름 : 정의되지 않음 '

답변

0

[JsonIgnore] 속성 직렬화하는 동안 속성을 무시하도록 JSON 포매터를 알려줍니다하지만 여전히 EF 모델의 일부이며 여전히 DbContext에서 생성 된 메타 데이터에 나타납니다. 직렬화 및 메타 데이터는 별개의 관심사입니다.

EDM [NotMapped] 속성을 모델의 속성에 추가하여 메타 데이터에서 숨길 수 있습니다. 당신이 당신의 모델을 터치하지 않으려면

, 당신은 당신의 DbContext, 예를 유창하게 구사 구성을 통해 그것을 무시 EF에게,

 
modelBuilder.Entity<Customer>().Ignore(t => t.CustomerID_OLD); 

당신이 속성은 서버 로직에 액세스 할 수 있음을 필요하면 할 수 있지만, Breeze 메타 데이터에서 숨겨져있는 경우 DbContext에서 상속 한 전용 MetadataDbContext을 만들고 거기에 "무시"코드를 넣을 수 있습니다. 예제는 DocCode의 NorthwindMetadataContext을 참조하십시오.

알림 : 일반적으로 EF에서 Null 허용 속성 만 숨길 수 있습니다. Null 허용되지 않는 속성에는 데이터베이스 스키마에 정의 된 기본값이 있으므로이 경우에는 작동합니다. 그렇지 않으면 데이터베이스가 삽입을 거부합니다.

+0

고맙습니다. http://stackoverflow.com/questions/16275184/how-can-i-tell-breeze-to-completely-ignore-a-property-from-a-code-first-generate 그래서 NorthwindMetadataContext는 저에게 맞는 예제입니다. 이제 데이터베이스에 처음 접근하고 onmodelcreating을 호출하지 않기 때문에 문제가 있습니다 ... – GioviQ