2011-11-29 2 views
1

이것은 사용자에 대한 내 데이터 모델ASP.Net MVC3 업데이트 관련 모델

public class User 
{ 
    /// <summary> 
    /// .cstor 
    /// </summary> 
    public User() 
    { 
     this.UserDetails = new UserDetails(); 
    } 

    /// <summary> 
    /// Gets or sets the Primary key.Identity key 
    /// </summary> 
    [Key] 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [ForeignKey("UserDetails")] 
    public int UserId { get; set; } 

    [Required] 
    [StringLength(150, MinimumLength = 1)] 
    public string Name { get; set; } 

    /// <summary> 
    /// Gets or sets the user details 
    /// </summary> 
    [Required] 
    public virtual UserDetails UserDetails { get; set; }   
} 

public class UserDetails 
{ 
    [Required] 
    public int UserDetailsId { get; set; } 

    [Required] 
    public virtual User User { get; set; }   

    [StringLength(1000)] 
    public string Address { get; set; } 

    [Required] 
    [StringLength(20, MinimumLength = 8)] 
    public string PhoneNumber { get; set; } 

    [StringLength(255, MinimumLength = 3)] 
    public string Email { get; set; } 

    [StringLength(255)] 
    public string Photo { get; set; } 
} 

같은 모습입니다 I가 사용자와의 UserDetails의 속성이 채워보기 (면도기 엔진)를 만듭니다. 하지만 Userdetails.User가 null이므로 저장할 때 내 modelstate가 유효하지 않으므로이 작업을 만들 수 없습니다. 내 이해에 따라,이 속성은 EF에 관계를 알리는 것입니다. 누군가 나에게 이러한 관련 엔티티를 절약 (DBcontext 저장 면도기) 끝낼 수있는 깔끔한 방법을 보여줄 수 있습니까?

답변

0

여기에는 일대일 관계가 있습니다.

응용 프로그램에서 이해가된다면 UserDetailsComplexType으로 만들고 User 속성을 제거하십시오.

이것의 한 가지 부작용은 모든 데이터가 단일 테이블에 저장된다는 것입니다.

+0

나는 코드 우선 접근법을 사용하고 있다고 가정하고 있지만 먼저 질문했을 것입니다. – rfmodulator

+0

예 처음 사용하는 코드 – NeatCoder