2014-11-11 3 views
2

У меня есть решение, содержащее проект WPF и проект Windows Phone, оба имеют ссылку на мой PCL, содержащий мои модели и ViewModels. У меня также есть проект WCF, который позволяет мне называть общий API. До сих пор он работал отлично.Entity Framework & Portable Class Library

Теперь я хочу использовать Entity Framework для связи с базой данных SQL, поэтому я могу сделать запрос из своих ViewModels. Я думал о переносе моих моделей из PCL в проект WCF и использовать их как сущности. Это подразумевает ссылку на мой проект WCF в PCL.

Так же, как указано здесь: Entity Framework for Portable Class Library, я получаю следующее сообщение об ошибке:

«. Не удалось добавить ссылку на„System.ComponentModel.DataAnnotations“Пожалуйста, убедитесь, что он находится в глобальном кэше сборок»

, который на самом деле является проблемой Nuget. (http://nuget.codeplex.com/workitem/2978). Настоящая причина в том, что Entity Framework больше не совместим с PCL. Из того, что я прочитал, Entity Framework 7 позволит мне сделать это, но пока это невозможно.

Кто-нибудь знает хороший способ связаться с моей базой данных с этой конфигурацией?

+0

Я редактировал свой титул. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

+0

«Entity Framework больше не совместим с PCL»: он никогда не был совместим; EF полагается на ADO.NET, а ADO.NET доступен только в полной платформе .NET. –

+0

Вы правы, я допустил ошибку. Что было совместимо раньше, но больше не является добавлением ссылки на проект WCF в PCL. Это решение было моим первым предположением, когда я столкнулся с моей проблемой. – MxFragz

ответ

1

Вот мое решение:

Мои модели и ViewModels по-прежнему определены в моем PCL. Объекты определены в WCF. Я добавил класс в свой WCF, который преобразует Entity в модель. Интерфейс, который определяет каждый доступный запрос API в PCL, и я реализую этот интерфейс на каждой платформе. Каждая реализация платформы просто вызывает методы, определенные в WCF (это означает, что я должен реализовать каждый запрос одинаково на каждой платформе). Я использую свой класс преобразования в WCF для возврата модели вместо сущности.

Это не лучшее решение, но это работает, пока я жду Entity Framework 7.

0

Обычно я храню свою модель в приложении wcf за слоем услуг.

В результате моя модель не имеет зависимости от DLL UI.

+0

Это то, что я пробовал, но если мои модели находятся в проекте WCF, как мне получить доступ к ним из моих ViewModels в PCL? Если я попытаюсь добавить ссылку на проект WCF в PCL, я получаю следующую ошибку: ** «Невозможно добавить ссылку на проект. Портативные проекты библиотеки могут ссылаться только на другие проекты и сборки переносных библиотек». * * – MxFragz

+0

Вы делаете вызовы веб-службы в приложение wcf, добавляя ссылку на службу вместо dll. –

+0

http://bertt.wordpress.com/2013/03/19/using-geonames-webservices-from-portable-class-library-pcl/ Нравится? Потому что я не могу добавить ссылку на службу в PCL. – MxFragz

Смежные вопросы