ASP.NETMVC3更新相关模型
这就是我的用户数据模型的样子ASP.NETMVC3更新相关模型,asp.net,asp.net-mvc-3,entity-framework,Asp.net,Asp.net Mvc 3,Entity Framework,这就是我的用户数据模型的样子 public class User { /// <summary> /// .cstor /// </summary> public User() { this.UserDetails = new UserDetails(); } /// <summary> /// Gets or sets the Primary key.Identity key
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; }
}
公共类用户
{
///
///.cstor
///
公共用户()
{
this.UserDetails=新的UserDetails();
}
///
///获取或设置主键。标识键
///
[关键]
[数据库生成(DatabaseGeneratedOption.Identity)]
[外键(“用户详细信息”)]
public int UserId{get;set;}
[必需]
[StringLength(150,最小长度=1)]
公共字符串名称{get;set;}
///
///获取或设置用户详细信息
///
[必需]
公共虚拟用户详细信息用户详细信息{get;set;}
}
公共类用户详细信息
{
[必需]
public int UserDetailsId{get;set;}
[必需]
公共虚拟用户用户{get;set;}
[长度(1000)]
公共字符串地址{get;set;}
[必需]
[StringLength(20,最小长度=8)]
公共字符串PhoneNumber{get;set;}
[StringLength(255,最小长度=3)]
公共字符串电子邮件{get;set;}
[StringLength(255)]
公共字符串Photo{get;set;}
}
我有一个Create视图(razor引擎),其中填充了User和UserDetails的属性。
但是我无法创建它,因为我的modelstate在保存时无效,因为Userdetails.User为null。根据我的理解,这个属性只是为了让EF知道这种关系。
有人能告诉我一种简洁的方法来保存这些相关实体的端到端(razor-to-DBcontext-save)保存吗?这里有一种1对1的关系 如果在应用程序中有意义的话,一种方法是将
UserDetails
aComplexType
,并删除它的User
属性
这样做的一个副作用是所有数据都将存储在一个表中。我假设您使用的是代码优先的方法……但我应该先问一下。