Entity Framework 4 with WCF Data Services 4
От: Аноним  
Дата: 26.01.12 11:57
Оценка:
Хочу использовать связку WinForms + WCF Data Services + SQL Server

В отдельном проекте (Model) создал модель edmx сущностей базы данных.

В отдельном проекте (Services) создал сервис WCF Data Service.

В отдельном проекте (Application) создал WinForms приложение, добавил референс на проект с edmx сущностями.

Проблема: при попытке добавить референс на сервис от запущенного второго проекта Visual Studio дублирует сущности, то есть для каждой сущности, определенной в проекте Model создает идентичную в проекте Application, например: Model.ModelEntities.Employee и Application.ServiceReference.Enployee.

Флаг "reuse types in referenced assemblies" выставлен.

Подскажите, как побороть такое поведение, чтобы можно было использовать одну и ту же модель данных как на сервере, так и на клиенте.
Re: Entity Framework 4 with WCF Data Services 4
От: Vaako Украина  
Дата: 26.01.12 14:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Хочу использовать связку WinForms + WCF Data Services + SQL Server


А>В отдельном проекте (Model) создал модель edmx сущностей базы данных.


А>В отдельном проекте (Services) создал сервис WCF Data Service.


А>В отдельном проекте (Application) создал WinForms приложение, добавил референс на проект с edmx сущностями.


А>Проблема: при попытке добавить референс на сервис от запущенного второго проекта Visual Studio дублирует сущности, то есть для каждой сущности, определенной в проекте Model создает идентичную в проекте Application, например: Model.ModelEntities.Employee и Application.ServiceReference.Enployee.


А>Флаг "reuse types in referenced assemblies" выставлен.


А>Подскажите, как побороть такое поведение, чтобы можно было использовать одну и ту же модель данных как на сервере, так и на клиенте.


Когда создается референс на WCF то все используемые WCF классы должны быть продублированы. Это делается для того, чтобы можно было разрабатывать клиент даже без исходников WCF. Связь делается с работающей WCF службой и при изменении классов в WCF надо делать Update ServiceReference, чтобы классы синхроонизировалися.
Re[2]: Entity Framework 4 with WCF Data Services 4
От: Vaako Украина  
Дата: 26.01.12 14:58
Оценка:
Здравствуйте, Vaako, Вы писали:

V>Когда создается референс на WCF то все используемые WCF классы должны быть продублированы. Это делается для того, чтобы можно было разрабатывать клиент даже без исходников WCF. Связь делается с работающей WCF службой и при изменении классов в WCF надо делать Update ServiceReference, чтобы классы синхроонизировалися.


Классы не дублируются полностью, копируются только поля с атрибутом [DataMember] вроде бы.
Re: Entity Framework 4 with WCF Data Services 4
От: _SZ_ Украина  
Дата: 26.01.12 15:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>...


А>Подскажите, как побороть такое поведение, чтобы можно было использовать одну и ту же модель данных как на сервере, так и на клиенте.



    Accessing WCF service without creating Proxy
    WCF Services in .Net without using “Add Service Reference”
(с)(_SZ_)
Re[2]: Entity Framework 4 with WCF Data Services 4
От: TK Лес кывт.рф
Дата: 26.01.12 20:02
Оценка:
Здравствуйте, _SZ_, Вы писали:

А>>Подскажите, как побороть такое поведение, чтобы можно было использовать одну и ту же модель данных как на сервере, так и на клиенте.


_SZ>

    _SZ>Accessing WCF service without creating Proxy
    _SZ>
_SZ>

    _SZ>WCF Services in .Net without using “Add Service Reference”
    _SZ>

WCF тут далеко не самое ключевое слово. Ключ здесь Data Services или в крайнем случае OData
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re: Entity Framework 4 with WCF Data Services 4
От: TK Лес кывт.рф
Дата: 26.01.12 20:07
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Хочу использовать связку WinForms + WCF Data Services + SQL Server

А>В отдельном проекте (Model) создал модель edmx сущностей базы данных.
А>В отдельном проекте (Services) создал сервис WCF Data Service.
А>В отдельном проекте (Application) создал WinForms приложение, добавил референс на проект с edmx сущностями.

А>Подскажите, как побороть такое поведение, чтобы можно было использовать одну и ту же модель данных как на сервере, так и на клиенте.


Сделайте интерфейсы от которых будут наследоваться классы как клиенте так и на сервере. Кроме того, что у вас есть сущности с совпадающими названиями свойств — ничего общего между ними нет. Более того, иметь на клиенте сборку с EF контекстом не самая лучшая идея.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Entity Framework 4 with WCF Data Services 4
От: Аноним  
Дата: 27.01.12 06:59
Оценка:
Здравствуйте, TK, Вы писали:

TK>Кроме того, что у вас есть сущности с совпадающими названиями свойств — ничего общего между ними нет. Более того, иметь на клиенте сборку с EF контекстом не самая лучшая идея.


Очень странно. Я всегда предполагал, что модель данных должна быть единая для клиента и сервера, при этом на клиенте просто меняется контекст (с доступа к базе данных на доступ к сервису). Иначе получится, что модель данных зависит от метода доступа к данным.

К тому же на официальном сайте http://msdn.microsoft.com/en-us/library/bb628653.aspx написано:

When a service reference is added to a project, any types defined in the service are generated in the local project. In many cases, this creates duplicate types when a service uses common .NET Framework types or when types are defined in a shared library.

To avoid this problem, types in referenced assemblies are shared by default.


То есть по-сути, решением в моей ситуации является добавить референс на сборку, в которой находится модель данных и выставить флаг "reuse types in referenced assemblies", но оно не работает.

Пока не хочется искать обходное решение, хочется разобраться, почему не работает стандартное решение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.