如何将模型类对象转换为数据表

时间:2019-02-27 06:28:35

标签: c# .net asp.net-web-api asp.net-core

我是c#的新手,我想将模型类对象转换为Web API中的DataTable。

模型类

 public class Employee_Master_Model
    {
        public string UserType { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MiddleName { get; set; }
        public string Mobile { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public bool IsActive { get; set; }
        public int EmployeeId { get; set; }
    }

控制器:

 public async Task<IActionResult> CreateEmployee([FromBody] Employee_Master_Model employee_Master_Model)
        {
            try
            {
              // Need to convert the object (employee_Master_Model) to DataTable
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

尝试几个小时无法完成。任何人都可以帮助我解决此问题。

3 个答案:

答案 0 :(得分:0)

为什么不能只创建一个数据表并用模型数据值填充它呢?

DataTable dt = new DataTable();

DataColumn c = new DataColumn("FirstName");
dt.Columns.Add(c);

DataRow r = dt.NewRow();
r["FirstName"] = model.FirstName; // model is an instance of Employee_Master_Model

答案 1 :(得分:0)

通过以下代码,您可以动态创建数据表列:

PropertyDescriptorCollection props = 
    TypeDescriptor.GetProperties(typeof(Employee_Master_Model));
DataTable dt = new DataTable();
foreach (PropertyDescriptor p in props)
    dt.Columns.Add(p.Name, p.PropertyType);

其余的只是将实体字段值复制到数据表列中。

答案 2 :(得分:0)

您的代码中存在许多问题。

首先,EmployeeId与您的创建模型无关。让数据库为您生成ID。我怀疑您同时使用Employee_Master_Model进行创建和更新。如果是这种情况,我建议您停止这样做,创建一个单独的模型来创建并删除不需要的属性。

第二,不要从您的API返回DataTable。一种常见的方法是返回创建的实体的生成的ID,仅此而已。如果确实需要获取所有数据,则可以创建一个GET端点,将刚刚收到的ID传递给它,它将为您提供数据。

第三,由于您正在使用WebAPi,因此要学习使用模型并学习使用DTO(数据传输对象)。这些通常用于返回数据。数据表是数据库实现的一部分,您不希望通过API公开数据表。