Совместное использование Linq для SQL DataContext между приложениями WP7.1 и WPF? - PullRequest
1 голос
/ 02 ноября 2011

Я создал приложение WP7.1, которое использует локальную базу данных.Я использовал sqlmetal для генерации контекста данных в соответствии с этой статьей.http://blogs.microsoft.co.il/blogs/alex_golesh/archive/2011/05/24/windows-phone-mango-what-s-new-local-database-part-1-of-8.aspx

Это работает, как и ожидалось, используя это в ViewModel.

context = new BirdsnBflysDC ("DataSource = 'isostore: BirdsnBflys.sdf'"); `

Я сейчас пытаюсь «поделиться» кодом Model и ViewModel с приложением WPF.Изначально я добавил соответствующие файлы в качестве ссылки на проект WPF.Создание экземпляра контекста не сработало, поэтому в качестве теста я добавил только код контекста данных в проект WPF и попытался создать экземпляр контекста в обработчике событий Loaded следующим образом.

BirdsnBflysDC context = new BirdsnBflysDC ("DataSource = 'C: \ BirdsnBflys.sdf'");DataContext = context;

Код фактически имеет полный путь к базе данных.Когда я выполняю это в отладчике, инициализация контекста в контексте данных прекращается, как если бы произошла исключительная ситуация, вторая строка кода выше никогда не достигается, и окно WPF отображается так, как будто все выполнено правильно.

Я пробовал несколько вариантов в строке DataSource, включая «| DataDirectory | \\ BirdsnBflys.sdf», все с одинаковым результатом.

Есть предложения, что с этим делать?Как выяснить, что не работает правильно?

Спасибо, Дейв

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Проблема в том, что то, что ожидается в строке подключения, отличается для двух сред.

WP7 работает с этим.

context = new BirdsnBflysDC ("DataSource = 'isostore: BirdsnBflys.sdf'");

WPF работает с этим.

context = new BirdsnBflysDC ("| DataDirectory | \ BirdsnBflys.sdf");

Если вы даете WPF имя файла, которого там нет, вы не получаете информации об ошибке, создание экземпляра контекста данных завершается неудачно и любой дополнительный код не выполняется.

Дейв

0 голосов
/ 02 ноября 2011

Вы удалили 2 метода из сгенерированного файла cs?Я имею в виду методы, не поддерживаемые манго.

public ExternalDB(System.Data.IDbConnection connection) :
    base(connection, mappingSource)
{
    OnCreated();
}

public ExternalDB(System.Data.IDbConnection connection,
System.Data.Linq.Mapping.MappingSource mappingSource) :
    base(connection, mappingSource)
{
    OnCreated();
}

Я не уверен в этом, но они могут быть необходимы для wpf.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...