Проблема Серализации WCF с EF - PullRequest
0 голосов
/ 19 апреля 2019

Я получаю это странное исключение в службе WCF Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Runtime.Serialization.dll

Вот приведенная схема БД: DB Schema

Вот как это создается в БД:

CREATE TABLE [appUser] (
  [use_id] int PRIMARY KEY  IDENTITY(1,1),
  [firstName] nvarchar(150),
  [lastName] nvarchar(150),
  [gender] nvarchar(10) DEFAULT 'M',
  [phoneNo] nvarchar(150) NOT NULL,
  [image] nvarchar(max) DEFAULT 'abcdlkfs',
  [userType] nvarchar(50) NOT NULL,
  [smsConfirmationCode] nvarchar(10),
  [smsVerifed] nvarchar DEFAULT '0',
  [createdOn] DATETIME DEFAULT GETDATE(),                
);


CREATE TABLE [parent] (
  [par_id] int PRIMARY KEY IDENTITY(1,1),
  [use_id] int FOREIGN KEY REFERENCES [appUser](use_id),
  [CNIC] nvarchar(150),
);


CREATE TABLE [student] (
  [stu_id] int PRIMARY KEY IDENTITY(1,1),
  [use_id] int FOREIGN KEY REFERENCES [appUser](use_id),
  [par_id] int FOREIGN KEY REFERENCES [parent](par_id),
  [regNo] nvarchar(150),
  [section] nvarchar(1) DEFAULT 'A',
  [discipline] nvarchar(150),
  [semesterNo] int DEFAULT 1,
  [isFreeze] bit DEFAULT 0,
  [admmisionDate] datetime DEFAULT GETDATE(),
  [semesterUpdateDate] datetime,
);


CREATE TABLE [teacher] (
  [tea_id] int PRIMARY KEY IDENTITY(1,1),
  [use_id] int FOREIGN KEY REFERENCES [appUser](use_id),
  [empNo] nvarchar(150),
);


CREATE TABLE [message] (
  [msg_id] int PRIMARY KEY IDENTITY(1,1),
  [from] int FOREIGN KEY REFERENCES [appUser](use_id),
  [to] int FOREIGN KEY REFERENCES [appUser](use_id),
  [body] nvarchar(max),
  [sentOn] datetime DEFAULT GETDATE(),
  [deliveredOn] datetime DEFAULT NULL,
  [status] nvarchar(30) DEFAULT 'pending',
);

Теперь, после добавления Entity Framework 6.x в проект WCF, он начинает выглядеть ужасно, вот что происходит:

EF 6.x

Если запись пуста, она возвращает пустой массив [], это нормально, но когда есть какая-то запись, она просто выбрасывает исключение Runtime.Serialization и сбрасывает соединения с клиентом. (сообщение об исключении можно увидеть только в окне вывода Visual Studio)

ЕСЛИ я отлаживаю, что даже данные возвращаются нормально: Debug Window pic

Но после продолжения процесса это происходит в Visual Studio: Output Window of VS

Вот что мы видим на POSTMAN: Postman Output

РЕДАКТИРОВАТЬ: После дополнительного анализа: это то, что сообщение об ошибке:

Тип 'System.Data.Entity.DynamicProxies.appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1' с именем контракта данных «appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1: http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' не ожидается. Рассмотрите возможность использования DataContractResolver, если вы используете DataContractSerializer или добавляете любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавляя их в список известных типов, передаваемых сериализатору.

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