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

时间:2014-04-14 13:40:48

标签: c# database mvvm model

我正在构建一个应用程序,用于存储一个国家/地区的省份和城市。我有两个模型:

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;
}

我知道我可以从读者那里获得省份ID [&#34;省份ID&#34;]但我不知道我应该在哪里获得省份数据?我应该从ProvinceViewModel获取它吗?

由于我的视图模型位于不同的项目中,我该怎么做?

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

1 个答案:

答案 0 :(得分:1)

问题的解决方案,不使用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"]));
});
相关问题