ASP.Net MVC3 обновление связанных моделей - PullRequest
1 голос
/ 29 ноября 2011

Вот так выглядит моя модель данных для USER

 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; }
}

У меня есть представление Create (движок бритвы), в котором заполняются свойства User и UserDetails. Но я не могу создать это, потому что мое состояние модели недействительно, когда я сохраняю, потому что Userdetails.User имеет значение null Насколько я понимаю, это свойство просто для того, чтобы EF знал отношения. Может кто-нибудь показать мне аккуратный способ выполнения сквозного (сохранение бритвы в DBcontext) сохранения этих связанных объектов?

1 Ответ

0 голосов
/ 29 ноября 2011

Здесь у вас есть отношение 1 к 1.

Один из способов сделать это, если это имеет смысл в вашем приложении, - сделать UserDetails a ComplexType и удалить его Userсвойство.

Одним из побочных эффектов этого является то, что все данные будут храниться в одной таблице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...