2017-04-11 117 views
1

我正在使用C#/ JS(with Handlebars.NET)为我的学士论文迁移/重新开发JavaScript应用程序到ASP.NET MVC框架的Web应用程序。将业务对象映射到多个数据库表

到目前为止,我已经创建了一个Web.API和一个窗体的实际应用程序。 在应用程序中,我输入详细信息以创建一个新员工,然后发布到API,该API将Json对象作为“业务对象”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); 
    } 
} 

现在,当我运行的代码是什么情况,即串行功能抱怨输入值不能为null ,这对我的理解是因为目标对象(例如Employee)没有在序列化的Json-Object中给出的所有属性。

错误消息是这样的:

值不能为空\ r \ n参数名:输入”,

“ExceptionType”: “System.ArgumentNullException”

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

对t的基本变化由于可用的时间,他的程序结构不能再做出来(我基本上是一个完整的编程初学者)。

回答

1

我推荐AutoMapper比你在那里使用。

+0

感谢您的回答。尽管Automapper不会将该Json-String转换为C#对象。 –