사용자 클래스를 만들고 ConfirmPassword 필드를 추가하려고합니다. 내 데이터베이스에이 필드가 없으므로 어떻게 처리해야합니까? 나는 또한 AutoMapper를 사용하고 있는데,이 필드를 무시하기 위해 매퍼 (mapper)에게 예를 들자면,이 여분의 필드를 다루기 위해 무엇인가를해야 하는가?EF 코드 첫 번째 및 확인 필드
여기에 내 사용자 클래스가 있고, 방금 버디 클래스에 NotMapped 속성을 추가했습니다. 이 모든 것이 내가해야 할 일인가요? 아니면이 시나리오를 처리하는 데 필요한 추가 코딩이 있습니까?
public partial class User
{
public User()
{
//this.DateCreated = DateTime.Now; //set default value
Roles = new HashSet<Role>();
}
public ICollection<Role> Roles { get; set; } //many to many relationship
public int UserId { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string ConfirmPassword { get; set; }
public string City { get; set; }
//foreign key
public int CountryId { get; set; }
//navigation properties
public virtual Country Country { get; set; }
//foreign key
public int LanguageId { get; set; }
//navigation properties
public virtual Language Language { get; set; }
public string EmailAddress { get; set; }
public long FacebookId { get; set; }
public DateTime DateCreated { get; set; }
}
//buddy class, validation in here because not supported in Fluent API
//test in ie
//MetadataType decorated class
[MetadataType(typeof(UserMetadata))]
public partial class User
{
}
//Metadata type
internal sealed class UserMetadata
{
[Required]
public string FirstName { get; set; }
[Required]
public string Surname { get; set; }
[Required]
[Remote("IsUsernameAvailable", "Validation")]
[DataType(DataType.Text)]
[DisplayName("Username")]
public string Username { get; set; }
[Required]
public int CountryId { get; set; }
public string Password { get; set; }
[NotMapped]
public string ConfirmPassword { get; set; }
public string City { get; set; }
public int LanguageId { get; set; }
public string EmailAddress { get; set; }
public long FacebookId { get; set; }
public DateTime DateCreated { get; set; }
}
}
편집은 다음 ConfirmPassword
필드가 아닌 도메인 모델 객체, 뷰 모델 클래스에
public class UserDTO
{
public int Id { get; set; }
public string FirstName { get; set; }
public string Surname { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string City { get; set; }
public string CountryName { get; set; }
public string LanguageName { get; set; }
public string EmailAddress { get; set; }
public long FacebookId { get; set; }
public DateTime DateCreated { get; set; }
}
유효성 검사를 위해 DTO 및 버디 클래스를 사용하고 있습니다. ConfirmPassword 속성이 유효성 검사를받을 때 클래스에 있어야하므로 제안을 어떻게 구현합니까? – user517406
아니요, ConfirmPassword 속성은 이미 내 대답에서 설명한대로 뷰 모델에만 있어야합니다. 그런 다음이 뷰 모델의 유효성을 검사합니다. 뷰 모델이 검증되면 AutoMapper를 사용하여 DTO 또는 도메인 모델 또는 뷰 모델에서 호출하는 모든 것을 구성 할 수 있습니다. 그러나 ConfirmPassword 필드는 뷰 모델에서만 의미가 있습니다. 모델의 다른 레이어에 넣어두면 잘못한 것 같습니다. –
Model vs View Model과 다소 혼동 스럽습니다. 데이터베이스와 상호 작용하는 모델이 있으며, UI 측면에서 사용되는 DTO가 있습니다. 이 시나리오에서는 View Model이 어디에 있습니까? – user517406