Как я могу использовать базу данных linq2sql на манго wp7, поддерживая смешиваемость?
Я пытаюсь создать приложение WP7, используя MVVM Light и SQL Server CE в качестве базы данных. Для этого я сгенерировал datacontext, используя sqlmetal.exe (1).
Это работает нормально, если я запускаю приложение на своем телефоне. Но при попытке отобразить данные времени разработки я не могу создать экземпляр DataContext
в моем дизайне временного кода. Можно ли это сделать? Еще один способ, которым я пытался создать экземпляр Table<MyDataObject>
, но System.Data.Linq.Table не имеет конструкторов.
Так что мой вопрос, возможно ли как-то создать экземпляр моего DataContext
из кода или что есть другой способ взаимодействия с моей базой данных без потери данных времени проектирования.
(1) На самом деле я использовал другой метод, использующий проект библиотеки, чтобы иметь возможность визуально проектировать, и скопировал файл конструктора в мой проект WP7. Результат такой же, если я прав.
1 ответ
После многих неудачных попыток я не смог найти способ программно высмеять DataContext
объект. Поэтому я сделал это по-другому, решая мою проблему.
Я создал сервисный интерфейс для запроса данных из базы данных. Для каждой таблицы в базе данных SQL CE мне нужно было вручную создать функцию.
public interface IPayDataService {
IQueryable<Account> GetAccounts();
IQueryable<User> GetUsers();
IQueryable<PayEntry> GetEntries();
}
В объекте реальных данных передаются соответствующие таблицы. В объекте времени разработки я создаю объекты в коде и возвращаю IQueryable
с помощью AsQueryable()
, Используя IQueryable
Я гарантирую, что запросы остаются оптимизированными (в данном случае Linq2Sql).
Хотя это не так идеально и требует больше ручного написания кода, мне удалось снова получить данные времени разработки.