-1

我是 MVC+EF 的新手

我需要一次将数据插入 3 个表,但无法弄清楚我该怎么做我的数据模型是

public class UserLogin
    {
        [Key]public int UserID { get; set; }
        public string LoginName { get; set; }
        public byte Password { get; set; }
    }
    public class UserDetails
    {
        [Key]
        public int DetailID { get; set; }
        [ForeignKey("UserLogin")]
        public int UserID { get; set; }
        public string UserName { get; set; }
        public string Address { get; set; }
    }
    public class UserType
    {
        [Key]
        public int TypeID { get; set; }
        [ForeignKey("UserLogin")]
        public int UserID { get; set; }
        public string TypeName { get; set; }
        public string TypeDiscription { get; set; }
    }
    public class UserBDCon : DbContext
    {
        public DbSet<UserLogin> logins { get; set; }
        public DbSet<UserDetails> Detail { get; set; }
        public DbSet<UserType> Type { get; set; }
    }

谁能告诉我这个模型的控制器和视图文件如何?

4

2 回答 2

0

您应该在模型类中创建其他属性:

数据模型应该是这样的:

public class UserLogin
{
    [Key]
    public int UserID { get; set; }
    public string LoginName { get; set; }
    public byte Password { get; set; }
}
public class UserDetails
{
    [Key]
    public int DetailID { get; set; }

    [ForeignKey("UserLogin")]
    public int UserID { get; set; }

    public string UserName { get; set; }
    public string Address { get; set; }

    //additional
    public UserLogin UserLogin { get; set; }
}
public class UserType
{
    [Key]
    public int TypeID { get; set; }
    [ForeignKey("UserLogin")]
    public int UserID { get; set; }
    public string TypeName { get; set; }
    public string TypeDiscription { get; set; }

    //additional
    public UserLogin UserLogin { get; set; }
}

示例(没有工作单元和存储库,但只有单一上下文):

    UserBDCon db = new UserBDCon();

    var userLogin = new UserLogin() {LoginName = "Admin", Password = new byte()};
    var details = new UserDetails() {Address = "Address", UserName = "Admin", UserLogin = userLogin};
    var type = new UserType() {TypeDiscription = "Description", TypeName = "TypeName", UserLogin = userLogin};

    db.logins.Add(userLogin);
    db.Detail.Add(details);
    db.Type.Add(type);

    db.SaveChanges(); // EF insert data into 3 table at a time

您应该使用相同的数据库上下文。在这种情况下,查询将成为同一事务的一部分。会更好地实现存储库模式和目标单一事务的工作单元,例如http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repository-and- asp-net-mvc 应用程序中的工作模式单元

于 2012-10-16T09:03:24.930 回答
0

我必须创建一个包含所有这些类的新类,如下所示:

public class ViewModel()
{
   public IList<UserLogin> LoginModel {get; set;}
   public IList<UserDetails> DetailsModel {get; set;}
   public IList<UserType> TypeModel {get; set;}
}

并且您必须返回此模型 return View(ViewModel) 并创建强倾斜视图,而不是像这样绑定表:

foreach(var item in ViewModel.LoginModel)
{

}
于 2012-10-16T07:59:50.610 回答