Как преобразовать объект класса Model в datatable - PullRequest
0 голосов
/ 27 февраля 2019

Я новичок в c #, хочу преобразовать объект класса модели в DataTable в Web API.

Класс модели

 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 голосов
/ 27 февраля 2019

С помощью следующего кода вы можете динамически создавать столбцы с данными:

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

Остальное - просто копирование значений полей сущностей в столбцы с данными.

0 голосов
/ 27 февраля 2019

У вас есть ряд проблем в вашем коде.

Во-первых, EmployeeId не имеет отношения к вашей модели создания.Позвольте базе данных создать идентификатор для вас.Я подозреваю, что вы используете Employee_Master_Model для создания и обновления.Если это так, я бы посоветовал вам прекратить это делать, создайте отдельную модель для создания и удалите ненужные свойства.

Во-вторых, не возвращайте DataTable из вашего API.Обычный подход - вернуть сгенерированный идентификатор созданной сущности и ничего более.Если вам действительно нужно получить все данные, то вы можете создать конечную точку GET, передать ей только что полученный идентификатор, и он даст вам данные.

В-третьих, поскольку вы используете WebAPi, научитесь использовать моделии научиться использовать DTO (объекты передачи данных).Они обычно используются для возврата данных.Таблицы данных являются частью реализации базы данных, вы не хотите, чтобы это раскрывалось через API.

0 голосов
/ 27 февраля 2019

Почему вы не можете просто создать таблицу данных и заполнить ее значением данных модели, например

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...