【问题标题】:Mapping Business Object to multiple Database Tables将业务对象映射到多个数据库表
【发布时间】: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


    【解决方案1】:

    我推荐 AutoMapper,而不是您在那里使用的。

    【讨论】:

    • 感谢您的回答。不过,Automapper 不会将该 Json-String 转换为 C# 对象。
    猜你喜欢
    • 2023-02-23
    • 2010-11-03
    • 2012-07-18
    • 2012-10-03
    • 1970-01-01
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多