2016-11-04 2 views
1

레코드를 업데이트 할 때 CreatedByCreatedDate 필드가 저장되는 것을 무시하고 싶습니다. savechanges()를 호출하기 전에 속성을 무시하십시오.

나는 저장소에 falseIsModfied를 설정했지만, 내가 전화 후 SaveChanges는() 그것은 CreatedBy 필드는 필수 필드입니다라고 예외가 발생합니다.

public void Save(Company company) 
    { 
     if (company.CompanyId > 0) 
     { 
      _context.Entry(company).State = EntityState.Modified; 
      _context.Entry(company).Property(c => c.CreatedBy).IsModified = false; 
      _context.Entry(company).Property(c => c.CreatedDate).IsModified = false; 
     } 
     else 
      _context.Companies.Add(company); 

     _context.SaveChanges(); 
    } 

이 필드는 내가 숨겨진 입력을 가진 또는 데이터베이스에서 원래의 회사를 얻을 필요하고 그것을 매핑하지 않고 업데이 트를 호출 할 때 이러한 속성을 무시하는 방법이있는 BaseModel

public class BaseModel 
{ 
    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(ValidationStringResource))] 
    [MaxLength(100, ErrorMessageResourceName = "MaximumLength", ErrorMessageResourceType = typeof(ValidationStringResource))] 
    public string CreatedBy { get; set; } 

    [Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(ValidationStringResource))] 
    public DateTime CreatedDate { get; set; } 

    [MaxLength(100, ErrorMessageResourceName = "MaximumLength", ErrorMessageResourceType = typeof(ValidationStringResource))] 
    public string LastUpdatedBy { get; set; } 

    public DateTime? LastUpdatedDate { get; set; } 
} 

에 뷰 모델?

+0

때때로 이러한 속성과 다른 시간을 무시해야합니까? – CodingYoshi

+0

새 레코드를 만들 때만 해당 값이 설정됩니다. 레코드를 업데이트 할 때 해당 속성을 무시해야합니다. – Andrew

답변

0

다른 해결책이 있지만이 문제를 해결 한 방법은 내 SqlContext 파일에서 ValidateOnSaveEnabled을 사용 중지하는 것입니다. 내가 읽은 것으로부터 EF는 추가되고 수정 된 모든 엔티티를 확인합니다. 이미 ViewModels의 유효성을 검사 했으므로이 기능을 비활성화했습니다.

0

업데이트를 수행 할 때 이러한 속성을 무시하고 싶지만 새로운 enteries에 대해 이러한 속성이 필요하므로이 속성을 기본으로 만들 것입니다. 기본 클래스를 상속하는 2 개의 클래스를 만듭니다. 하나는 업데이트 용이고 다른 하나는 새 항목 용입니다. 새 항목에 대한 클래스는 필수 속성을 사용하여 속성을 장식해야합니다. 업데이트를위한 다른 클래스는 안됩니다.

+0

기본 모델을 상속 한 내 도메인 모델입니다. 업데이트에 대한 내 ViewModels에 필수 속성이 없습니다. CreatedBy 및 CreatedDate가 db에서 Nullable이 아닌 경우 내 도메인 모델이 일치해야합니까? – Andrew

+0

죄송합니다. 귀하의 도메인 모델을 몰랐습니다. 아니, 나는 그것이 데이터베이스와 일치해야한다고 생각하지 않는다. 데이터베이스가 이러한 규칙을 시행하고 있으며 응용 프로그램 계층이이를 달성하는 한 db는 사용자가이를 달성하는 방법에 신경을 쓰지 않습니다. 하지만 지금은 궁금 해서요, 그래서이 논리를 뷰 모델에서 다시 복제하고 있습니까? – CodingYoshi

+0

데이터베이스를 만들기 위해 코드를 먼저 마이 그 레이션 했으므로 필드를 null이 아닌 필드로 만들려면'[Required]'속성을 가져야합니다. 내 ViewModels에는 동일한 로직이 있지만 VM에는 필요한 속성 만 포함되어 있으므로 업데이트 VM의 경우에도 createdby 속성이 없습니다. 이런 식으로하는 것이 나쁜 습관이라고 생각합니까? – Andrew

관련 문제