ASP.Net MVC3更新相关模型

时间:2011-11-29 00:56:26

标签: asp.net asp.net-mvc-3 entity-framework

这就是我的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视图(razor引擎),其中填充了User和UserDetails的属性。 但是我无法创建这个,因为我的模型状态在保存时无效,因为Userdetails.User为null。根据我的理解,这个属性只是让EF知道这种关系。 有人能告诉我一个简洁的方法来结束(剃刀到DBcontext保存)这些相关实体的保存吗?

1 个答案:

答案 0 :(得分:0)

这里你有一对一的关系。

执行此操作的一种方法是,如果在您的应用程序中有意义,则可以UserDetails成为ComplexType并删除它的User属性。

这样做的一个副作用是所有数据都将存储在一个表中。