如何从数据库中读取数据并将其放入模型中

本文关键字:模型 数据 数据库 读取 | 更新日期: 2023-09-27 17:58:10

我正在构建一个应用程序,在其中存储一个国家的省市。我有两种型号:

public class Province
{
    public int ID { get; set; }
    public string Name { get; set; }
}
public class City
{
    public int ID { get; set; }
    public string Name { get; set; }
    public Province Province { get; set; }
}

这是我从数据库中读取省份数据的方式:

public static List<Province> ReadList()
{
    var list = new List<Province>();
    using (var connection = new MySqlConnection(_connectionString))
    {
        using (var cmd = new MySqlCommand("SELECT * FROM Province;", connection))
        {
            connection.Open();
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                list.Add(new Province()
                {
                    ID = Convert.ToInt32(reader["ID"]),
                    Name = reader["Name"].ToString()
                });
            }
            reader.Close();
        }
    }
    return list;
}

而且效果很好。我的问题是在阅读城市数据时:

public static List<City> ReadList()
{
    var list = new List<City>();
    using (var connection = new MySqlConnection(_connectionString))
    {
        using (var cmd = new MySqlCommand("SELECT * FROM City;", connection))
        {
            connection.Open();
            MySqlDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                list.Add(new Province()
                {
                    ID = Convert.ToInt32(reader["ID"]),
                    Name = reader["Name"].ToString(),
                    Province = ???
                });
            }
            reader.Close();
        }
    }
    return list;
}

我知道我可以从阅读器["ProvinceID"]获得ProvinceID,但我不知道我应该在哪里获得省份数据本身?我应该从ProvinceViewModel获得它吗?

既然我的视图模型在不同的项目中,我该怎么做?

我真的不知道我错在哪里了?

如何从数据库中读取数据并将其放入模型中

如果不使用ORM,问题的解决方案如下:下

var list = new List<City>();

申报一份包含所有省份的列表,并填写您所拥有的省份——您可以按照上述方式读取数据。

var provinces = GetProvinces();

方法GetProvinces返回我们拥有的所有省份的列表。

然后在方法中,您读取城市的每条记录:

list.Add(new City()
{
    ID = Convert.ToInt32(reader["ID"]),
    Name = reader["Name"].ToString(),
    Province = provinces.SingleOrDefault(x=>x.ID==Convert.ToInt32(reader["ProvinceID"]));
});