powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / OperationContract с EntityFramework
12 сообщений из 12, страница 1 из 1
OperationContract с EntityFramework
    #36819573
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, подскажите пожалуйста, что делаю не так:

На сервере:
1. Создал Edmx модель из БД.
2. Создал WCF Service и определил там следующий OperationContract:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 
public class TestService : ITestService
    {
public List<People> f2()
        {
            TestEntities context = new TestEntities();

            var q = from c in context.PeopleSet
                select c;
            return q.ToList();
        }
}

и в интерфейсе:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 
[ServiceContract]
public interface ITestService
{
     [OperationContract]
     List<People> f2();
}

На клиенте:
1. Создаю ServiceReference1. Создается, за исключением того, что в сгенеренном классе нету объекта ServiceReference1Client.
Если в контрактах не работаю с edmx-моделью, тогда все замечательно работает.

Скачал тестовый проект с МСДН, вроде все также, но в МСДН-овском проекте работает, в моем - нет.
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819590
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
People как DataContract объявлен? (на сервере и клиенте)
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819664
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,

People - это класс, сгенеренный EntityFramework, он по умолчанию уже идет как DataContract.
Из кода:
Код: plaintext
1.
2.
[global::System.Runtime.Serialization.DataContractAttribute(IsReference=true)]
[global::System.Serializable()]
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819672
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cha0ss,

на клиенте такой же контекст?
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819695
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bured,

До того, как я подключаю ServiceReference я ничего не объявляю. После того, как подключил ServiceReference в сгенеренных классах появляется только один класс People. В аттрибутах DataContract есть
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819706
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cha0ssbured,

До того, как я подключаю ServiceReference я ничего не объявляю. После того, как подключил ServiceReference в сгенеренных классах появляется только один класс People. В аттрибутах DataContract есть
Это не пойдёт, если у People внешние ключи. Создавайте нормальный контекст или объявляйте все связанные с People сущности.
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819707
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на клиенте
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819738
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему тогда в МСДН-вском примере все работает без всяких объяв классов на клиенте.

Сцылка на исходники: http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/DataPoints2008_07.exe

Я ставил стартовый проект NWServiceLibrary. запускал. И даже с чистого проекта при создании ServiceReference (http://localhost:8731/Design_Time_Addresses/NWServiceLibrary/NWService/) все нормально создается.
В статье также ничего не говорится о создании контекста на клиенте ( http://msdn.microsoft.com/ru-ru/magazine/cc700340.aspx )
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36819762
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в примере в Reference.cs объявлено всё что надо.

Есть у People внешние ключи?
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36821054
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buredДа, в примере в Reference.cs объявлено всё что надо.

Есть у People внешние ключи?
Reference.cs генерится автоматически когда мы устанавливаем Service Reference. До этого ничего не прописывается.
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36821067
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
buredДа, в примере в Reference.cs объявлено всё что надо.

Есть у People внешние ключи?
Reference.cs генерится автоматически когда мы устанавливаем Service Reference. До этого ничего не прописывается.

Я же пишу, что беру этот МСДН-ский проект, запускаю службу.
Далее открываю чистый проект (не пишу там не единой строчки кода), сразу подключаю Service Reference и все генерится нормально, более того я к этому МСДН-вскому проекту добавил и своих People, и так же в пустом проекте генерится все нормально.
Что не так в моей службе никак понять не могу :(

P.S У таблицы Doc есть внешний ключ на таблицу People.
...
Рейтинг: 0 / 0
OperationContract с EntityFramework
    #36821260
cha0ss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вообщем нашел изза чего не работает:
Если создавать Edmx модель находится в том же проекте, что и запускаемый сервис, тогда все отлично. Если же Edmx модель находится в другой dll, то возникает проблема.
Это все изза того, что при использовании Edmx модели из dll в connectionstring надо менять путь до метаданных, т.е
metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl уже не катит.

Кто знает что надо прописать, чтобы указать метаданные из dll?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / OperationContract с EntityFramework
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]