【问题标题】:Is there any simple way to populate list model from datareader?有什么简单的方法可以从 datareader 填充列表模型吗?
【发布时间】:2019-05-23 07:35:15
【问题描述】:

我正在通过 OracleDataReader 从表中获取数据。我有这张桌子的模型。

员工模型

 public class Employee
    {
        public int ID { get; set; }
        public int SIRKETID { get; set; }
        public string NAME{ get; set; }
        public string SURNAME{ get; set; }
        public string DEPARTMENT{ get; set; }
        public string STATUS{ get; set; }
    }

控制器

 public JsonResult getEmployee()
    {
....
                string sql = @"select * from Employee";
                OracleCommand command = new OracleCommand(sql, connection);
                OracleDataReader reader = command.ExecuteReader();

                while (reader.Read())
                {
                    var employee = new Employee();
                    Employee.ID = Convert.ToInt32(reader["ID"]);
                    Employee.SIRKETID = Convert.ToInt32(reader["SIRKETID "]);
                    Employee.NAME = reader["NAME"].ToString();
                    Employee.SURNAME = reader["SURNAME"].ToString();
                    Employee.DEPARTMENT = reader["DEPARTMENT"].ToString();
                    Employee.STATUS = reader["STATUS"].ToString();

                    model.Add(Employee);
                }
....
                return Json(new { data = model});
    }

这很好用,但我不想一一映射列。我有 100 列。而且我不知道某些表中有多少列

有什么简单的方法可以将模型返回为 json

【问题讨论】:

  • 有许多 MicroORM(例如 Dapper)。如果您想在代码中保留 SQL 查询,请尝试使用其中之一。
  • EntityFramework、Dapper、ORMLite、LinQ2Sql:这些命题是有序的。

标签: c# oracle model automapper datareader


【解决方案1】:

您可以使用像Dapper 这样的第三方库,这是一个简单的.Net 对象映射器。

您可以查看下面的基本用法示例:

public class Dog
{
    public string Name { get; set; }
    public float? Weight { get; set; }    
}

var dog = connection.Query<Dog>("SOME QUERY", new { Name = "DOGNAME" });

【讨论】:

    【解决方案2】:

    如果你想把你OracleDataReader的结果转成任意JSON,可以先序列化成(string, object)的字典,再把字典转成json。

    Here 是一个类似主题的答案,它提供了一些代码来做到这一点。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 2011-05-18
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多