Newb,所以请放轻松......
我有一个WPF项目,我已经创建了一个数据访问层,我使用以下代码获取了我需要的数据:
public static List<Model.CountryList> GetAllCountriesList()
{
SqlConnection connection = new DatabaseConnection().ConnectToBooze();
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
SqlDataAdapter da = new SqlDataAdapter();
cmd.CommandText = "dbo.spGetAllCountries";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = connection;
connection.Open();
reader = cmd.ExecuteReader();
var CompanyList = new List<Model.CountryList>();
while (reader.Read())
{
while (reader.Read())
{
var Cli = new Model.CountryList();
Cli.CountryID = Convert.ToInt32(reader["CountryID"]);
Cli.CountryName = reader["CountryName"].ToString();
//Add the country to Country List
CompanyList.Add(Cli);
}
}
//Return list
return CompanyList;
}
我正在努力的是,如何将其从DAL传递到我的表示层?我曾想过要创建一个数据&#39;表示层上的类,从我的DAL调用上面的方法并返回此列表,但是,我不确定如何执行此操作而不必将类型列表隐式转换为列表&#39;错误,我试过的是:
public static List<Model.CountryList> GetAllCountries()
{
return DataAccessLayer.DatabaseGets.GetAllCountriesList();
}
感谢您的指导。
答案 0 :(得分:3)
通过我阅读你的更多关于架构的问题而不是任何错误。考虑到这一点,我说你提供的代码实际上是某个存储库的一部分,该存储库将实现一个你在其他地方定义的接口,它将被注入任何需要该功能的视图模型。
简化的图层图可以是:
UI -> ViewModel -> Model <- DAL
namespace MyApp.Model
{
public interface IMyRepo
{
IEnumerable<Model.CountryList> GetAllCountries();
}
}
namespace MyApp.DAL
{
public class MyRepo : IMyRepo
{
IEnumerable<Model.CountryList> GetAllCountries()
{
/**
data access
**/
}
}
}
namespace MyApp.ViewModel
{
public class MainViewModel : ViewModelBase
{
public MainViewModel(IMyRepo repo)
{
this.Repo = repo;
}
}
}