#c# #sql-server #entity-framework #wcf
#c# #sql-сервер #entity-framework #wcf
Вопрос:
Я получаю это странное исключение в службе WCF Exception thrown: 'System.Runtime.Serialization.SerializationException' in System.Runtime.Serialization.dll
Вот приведенная схема базы данных:
Вот как это создается в DB:
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, он начинает давать get ugly 😭, вот что происходит:
ЕСЛИ запись пуста, она возвращает пустой массив []
, это нормально, но когда есть какая-то запись, она просто выбрасывается во время выполнения.Исключение сериализации и сброс соединений с клиентом. (Сообщение об исключении можно увидеть только в окне вывода Visual Studio)
ЕСЛИ я отлажу это, даже данные вернутся нормально:
Но после того, как я продолжу процесс, это произойдет в Visual Studio:
Это то, что мы видим у ПОЧТАЛЬОНА:
РЕДАКТИРОВАТЬ: после дополнительного анализа: вот что такое сообщение об ошибке:
Введите ‘System.Data.Entity.DynamicProxies.appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1’ с именем контракта данных ‘appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies‘ не ожидается. Рассмотрите возможность использования DataContractResolver, если вы используете DataContractSerializer, или добавьте любые типы, которые не известны статически, в список известных типов — например, с помощью атрибута KnownTypeAttribute или добавив их в список известных типов, переданных сериализатору.
Комментарии:
1. Мне кажется, что что-то не так с процессом сериализации и десериализации. Взгляните на docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details /…
2. @AbrahamQian Я уже перепроверил все типы данных, они в порядке