Как я могу использовать базу данных 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).

Хотя это не так идеально и требует больше ручного написания кода, мне удалось снова получить данные времени разработки.

Другие вопросы по тегам