为了我的实习,我正在创建一个与后台数据库通信的程序。该程序采用MVC(模型-视图-控制器)的分层方式。
对于视图,我想通过我称之为数据访问层(DAL)的东西来访问数据。因为该视图具有最小的知识,所以我希望它传递一个查询ID。调用将在DAL内部完成。然后,使用ID,我想要查询一种包含查询的类,以便返回查询结果并在DAL内部执行。如下图所示。
对于视图,我想通过我称之为数据访问层(DAL)的东西来访问数据。因为该视图具有最小的知识,所以我希望它传递一个查询ID。调用将在DAL内部完成。然后,使用ID,我想要查询一种包含查询的类,以便返回查询结果并在DAL内部执行。如下图所示。
public class DataAccesLayer
{
private Queries queryloader;
private RoadsoftDigitacV8DataContext db;
public DataAccesLayer()
{
queryloader = new Queries();
db = new RoadsoftDigitacV8DataContext();
}
public List Read(int ID)
{
IQueryable query;
query = queryloader.GetQuery(ID);
return query.ToList();
}
}
查询类的代码:
public class Queries
{
private Dictionary<int, IQueryable object> queryDict;
private ErrorLoggerWinLog logger;
public Queries()
{
logger = ErrorLoggerWinLog.Instance();
queryDict = new Dictionary<int, IQueryable object>();
queryDict.Add(1, from d in db.Drivers
select d);
}
public object GetQuery(int ID)
{
var query;
if(queryDict.TryGetValue(ID, out query) == false)
{
logger.WriteLine("Queries", "Could not find the query specified", ErrorLoggerWinLog.loggerlevel.Error);
}
return query;
}
}
我在想,这是可能的吗?目前看来好像不起作用。我可能忘记了什么或者错过了重要的东西。有人对这种设置有经验吗?还是应该寻找完全不同的解决方案?
编辑:目前似乎无法执行查询,就像我在读取函数中缺少一个命令一样。但数据上下文已经填充了,在程序的其他部分完成了这个操作。
编辑2:我正在研究IRepository模式,这是一次很棒的学习体验,感谢所有花时间评论和回答问题的人!