2012-02-07 2 views
2

나는 edml의 빈 디자이너에 테이블을 끌어서 데이터 기반 모델을 만들었다. 내 모델 주위에 datacontext를 만들 수 있으며, 클래스 인 것처럼 각 테이블에 액세스 할 수 있지만 이러한 모델 각각에 대한 코드는 어디에 있습니까?EDML에서 생성 한 모델의 코드는 어디에 있습니까?

클래스 자체의 각 속성에 대한 설정자에 유효성 검사를 추가하고 싶습니다.

답변

3

프로젝트의 루트 수준에서 .dbml 파일을 찾으십시오. 이 파일 아래에 <someDB>.designer.cs이라는 파일이 표시됩니다.

그러나 디자이너 파일의 맨 위에이 파일이 표시되므로이 파일의 클래스를 실제로 변경하고 싶지는 않습니다. 당신이 추가를 확인하려면

//  Changes to this file may cause incorrect behavior and will be lost if 
//  the code is regenerated. 

, 당신은 생성 된 클래스의 기능을 확장 Partial 클래스를 만들기로 보일 것입니다.

namespace ETL_Framework_UI 
{ 
[MetadataType(typeof(DataObjectMD))] 
public partial class DATA_OBJECT:IValidatableObject 
{ 

    public class DataObjectMD 
    { 
     [Required(ErrorMessage="The object name is required")] 
     [StringLength(50, ErrorMessage = "Name cannot exceed 50 characters")] 
     public string OBJECT_NAME { get; set; } 

    } 
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     ETLDbDataContext db = new ETLDbDataContext(); 
     var field = new[] { "OBJECT_NAME" }; 
     var param = db.DATA_OBJECTs.SingleOrDefault(r => r.OBJECT_NAME == OBJECT_NAME && r.OBJECT_ID != OBJECT_ID); 
     if (param != null) 
     { 
      yield return new ValidationResult("Object name is already in use. ", field); 
} 

참고 귀하의 부분 클래스는 당신이 당신의 designer.cs 파일의 상단에 볼 같은 네임 스페이스에 정의해야합니다 여기

내가 내 검증을 처리하기 위해 만든 샘플 부분 클래스입니다.

+0

부분 클래스를 사용한 적이 처음입니다. 거기에 몇 가지 코드가 있습니다. 본 적이 없습니다. –

+1

멋진 멋진 것들이 많이 있습니다. 오른쪽에있는 PluralSight 비디오 (http://www.asp.net/mvc)를 확인하십시오. 유효성 검사 및 기타 MVC 개념에 대한 훌륭한 자습서가 있습니다. – Rondel

+0

링크를 제공해 주셔서 감사합니다. 처음으로 "yield"가 사용 된 것을 처음 보았습니다. 무슨 뜻이에요!? –

3

자동 생성 클래스 자체는 수정하고 싶지 않습니다. 다시 생성해야하는 경우 큰 문제가 발생할 수 있습니다. 대신 DataAnnotations에 부분 클래스를 사용하려고합니다. 이렇게하면 유효성 검사/추가 규칙이 영원히 분리되고 유지 관리가 더 쉬워집니다. 유효성 검사를 추가하려는 경우

Entity framework + validation annotation

+1

감사합니다. Idon't는 그런 물건이 존재 한다라는 것을 알고있다, 그리고, 나는 지금 어떤 코드 Rondel (위의)이 그의 예에서 이야기하고 있었는지에 관해 안다. –

1

어쩌면 엔티티 프레임 워크 코드 첫 번째는 더 나은 솔루션입니다.

+0

이유를 설명해 주시겠습니까? 필자는 항상 linq에서 SQL로 엔티티를 선택해야하는 이유를 항상 궁금해했습니다. ltos는 SQL Server 환경에서 더 좋습니다. –

+1

나는 이유에 대해서도 알고 싶어합니다. 나는 EF처럼 L2S와 잘 작동하지 않는 자주 사용되는 검증 시스템에 대해서는 잘 모르고 있습니다. –

+1

부분 클래스는 필요하지 않습니다. 당신은 한 곳에서 모든 것을 가지고 있습니다. EF 코드의 장점에 대해 자세히 알아보기 http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx –

관련 문제