我是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;
}
}
尝试几个小时无法完成。任何人都可以帮助我解决此问题。
答案 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公开数据表。