Я получаю это странное исключение в службе WCF Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Runtime.Serialization.dll
Вот приведенная схема БД:
Вот как это создается в БД:
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, он начинает выглядеть ужасно, вот что происходит:
Если запись пуста, она возвращает пустой массив []
, это нормально, но когда есть какая-то запись, она просто выбрасывает исключение Runtime.Serialization и сбрасывает соединения с клиентом. (сообщение об исключении можно увидеть только в окне вывода Visual Studio)
ЕСЛИ я отлаживаю, что даже данные возвращаются нормально:
Но после продолжения процесса это происходит в Visual Studio:
Вот что мы видим на POSTMAN:
РЕДАКТИРОВАТЬ: После дополнительного анализа: это то, что сообщение об ошибке:
Тип 'System.Data.Entity.DynamicProxies.appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1' с именем контракта данных «appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1: http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies' не ожидается. Рассмотрите возможность использования DataContractResolver, если вы используете DataContractSerializer или добавляете любые типы, которые не известны статически, в список известных типов - например, с помощью атрибута KnownTypeAttribute или добавляя их в список известных типов, передаваемых сериализатору.