asp.net - 将数据插入到多表 MVC ASP 的最佳方法

标签 asp.net asp.net-mvc asp.net-mvc-4 entity-framework-5

我有4张 table 。 OperationTable、ClientTable、ClientDetails、OperationRes

客户表

  • 客户ID
  • 姓名
  • 姓氏
  • 生日
  • 版本号

  • 客户详情
  • 客户ID
  • 邮箱
  • 地址
  • 电话

  • 操作表
  • 操作ID
  • 日期
  • 时间
  • 客户ID

  • 操作资源
  • ResID
  • 操作ID
  • 姓名
  • 类型

  • 我有一个页面,我们要求客户填写表格以注册 smth。一切都必须在一页中,在客户提交表单后,我们必须将所有数据插入到它的表中。 OperationTable 的日期和时间,ClientTable 的名称和姓氏等。
    我是 ASP.NET MVC 的新手。我曾尝试使用“代码 Fisrt”。我已经创建了模型,只是用它来自动生成 View 和 Controller 。但这不是我想要的。我找到了这个 Tutorial .它有效!但是我有超过 4 个表,行数比我上面写的要多。什么是最好的解决方案?

    最佳答案

    您需要一个包含要插入的所有数据的 View 模型,然后在您的 Controller 中创建基于该 View 模型的对象并使用 EF 插入。类似的东西:

    public class MyViewModel
    {
        public string Name {get; set;}
        public string Birthday {get; set;}
        public string VerNumber { get; set;}
        public string Email {get; set;}
        public string Address {get; set;}
        // etc etc for the rest of your data
    }
    

    然后在您的 Controller 中,使用您的 ViewModel 填充您的实体,然后使用 EF 插入:
    [HttpPost]
    public ActionResult Add(MyViewModel model)
    {
         var client = new Client{
              Name = model.Name,
              Birthday = model.Birthday
         };
    
         var clientDetails = new ClientDetails();
    
         //etc for your other entities
    
         using (var context = new MyDbContext)
         {
              context.Clients.Add(client);
              clientDetails.ClientId = client.Id;
              context.ClientDetails.Add(clientDetails);
              //etc add your other classes
              context.SaveChanges();
    
         }
    
         //whatever you want to do here for the result, maybe direct to new controller
         //or return view
         return View();
    
    }
    

    您可能想查看使用 Repository Pattern 整理 Entity Framework 代码。你也可以看看automapper从您的 View 模型映射实体,以保存手动执行。

    关于asp.net - 将数据插入到多表 MVC ASP 的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23429888/

    相关文章:

    c# - 在内存中缓存应用程序数据 : MVC Web API

    jquery - 如何使用 AJAX 或 Jquery 在 ASP.Net 中发布数据而不刷新页面

    jquery - 使用 Asp.net mvc 格式化日期

    asp.net-mvc - ASP.NET MVC 必填字段指示符

    javascript - 在 MVC ASP.NET 中重新加载页面时如何在特定位置滚动页面

    c# - 用于接收密码重置 token 的 MVC4 模式

    asp.net - 如何阻止 ASP.NET Web api PUT 动词返回 500

    asp.net - "Site is under construction"asp.net 站点页面

    asp.net - 系统.Data.OleDb.OleDbException : Could not find installable ISAM

    mysql - Sensenet:是否支持Mysql