将业务对象映射到多个数据库表

时间:2017-04-11 18:43:47

标签: c# asp.net-mvc asp.net-web-api json.net

我正在使用C#/ JS(使用Handlebars.NET)从我的学士论文中将一个Web应用程序从JavaScript迁移/重新开发到ASP.NET MVC框架。

到目前为止,我已经创建了一个Web.API和一个带有表单的实际应用程序。 在应用程序中,我输入详细信息以创建新的Employee,然后将其发布到API,该API将Json-Object作为“业务对象”BOEmployee接收。

说BOEmployee看起来像这样(简化):

public class BOEmployee
    {
        public int ID_Employee { get; set; }
        public int ID_Company { get; set; }
        public string lastName { get; set; }
        public string firstName { get; set; }
}

我想将此对象映射到另外两个对象,表示底层数据库的表,然后将它们保存到数据库中。这两个目标表是使用Entity Framework自动生成的。

以下是表格对象:

1。雇员:

public partial class Employee
   {    
        public int ID_Employee { get; set; }
        public int ID_Company { get; set; }
}

2。 Employee_Details:

  public partial class Employee_Detail
    {
        public int ID_Employee_Detail { get; set; }
        public int ID_Employee { get; set; }
        public string lastName { get; set; }
        public string firstName { get; set; }
}

现在我可以通过分配每个属性来手动映射它们,但显然这是一个非常不可持续的想法。所以我一直在寻找一种方法来自动使用Json.Net自动化映射过程:

[HttpPost]
public BOEmployee SaveEmployee([FromBody] string employee)
{
    using (var context = new myDBEntities())
          {
               JavaScriptSerializer serializer = new JavaScriptSerializer();

               Employee_Detail dbEmployeeDetails = serializer.Deserialize<Employee_Detail>(BOEmployee);
               Employee dbEmployee = serializer.Deserialize<Employee>(BOemployee);
    }
}

现在,当我运行该代码时会发生什么,串行器函数抱怨输入值不能为空,据我所知,这是因为目标对象(例如Employee)没有给出的所有属性序列化的Json-Object。

错误讯息是:

  

值不能为空。\ r \ n参数名称:输入“,

     

“ExceptionType”: “System.ArgumentNullException”

现在我的问题是,如何将我的对象映射到不同的数据库表?或者我现在完全走错了路?

由于可用时间不能再对程序结构进行基本更改(我基本上是编程的初学者)。

1 个答案:

答案 0 :(得分:1)

我建议 AutoMapper ,而不是你在那里使用的。