【发布时间】:2017-04-11 18:43:47
【问题描述】:
我正在为我的学士论文使用 C#/JS(使用 Handlebars.NET)将 Web 应用程序从 JavaScript 迁移/重新开发到 ASP.NET MVC 框架。
到目前为止,我已经创建了一个 Web.API 和带有表单的实际应用程序。 在应用程序中,我输入详细信息以创建一个新员工,然后将其发布到 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);
}
}
现在,当我运行该代码时会发生什么,序列化程序函数抱怨输入值不能为空,据我了解,这是因为目标对象(例如员工)不具有序列化的 Json-Object。
错误信息是这样的:
值不能为空。\r\n参数名称:input",
"ExceptionType":"System.ArgumentNullException"
现在我的问题是,如何将我的对象映射到不同的数据库表?还是我现在完全走错了路?
由于时间有限,无法再对程序结构进行根本性更改(而且我基本上是一个完全的编程初学者)。
【问题讨论】:
标签: c# asp.net-mvc asp.net-web-api json.net