Для моей стажировки Я создаю программу, которая обменивается данными с базой данных на заднем плане. Программа накладывается в режиме MVC (Model-View-Controller).Объект Ориентированный класс запроса Linq2Sql
Для просмотра Я хочу получить доступ к данным через что-то, что я назвал DataAccesLayer (DAL). Поскольку это представление имеет минимальные знания, я хочу, чтобы он передал ID для запроса, который я хочу вызвать. Вызов будет выполняться внутри DAL. Затем с идентификатором я хочу спросить класс, который содержит запросы, чтобы вернуть запрос, а затем выполнить его внутри DAL. Изображение для визуализации.
У меня проблема в том, как выполнить запрос в моей функции чтения. Код для 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;
}
}
Я задаюсь вопросом, возможно ли это? Сейчас это не работает. Я, наверное, забываю что-то или что-то важное. Кто-нибудь имеет какой-либо опыт работы с подобной настройкой или должен смотреть на совершенно другое решение?
Редактировать: сейчас, похоже, он не выполняет запрос, например, мне не хватает команды в функции чтения. Datacontext заполнен, хотя это делается в другом разделе программы.
Edit2: Прямо сейчас я изучаю шаблон IRepository, это отличное обучение, спасибо всем, кто нашел время, чтобы комментировать и андерсе!
Хорошее усилие с вопросом, +1 для изображения =] – Sean
Однако ..... Что именно не работает? – Sean
Вам все равно нужно подключить объект контекста db к фактической базе данных. Поскольку у вас есть это сейчас, у вас есть несвязанный контекст. Затем вам нужно будет выполнить запрос через контекст. – ThaMe90