我正在使用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”
现在我的问题是,如何将我的对象映射到不同的数据库表?或者我现在完全走错了路?
由于可用时间不能再对程序结构进行基本更改(我基本上是编程的初学者)。
答案 0 :(得分:1)
我建议 AutoMapper ,而不是你在那里使用的。