EF的WCF序列化问题

时间:2019-04-19 01:51:18

标签: c# sql-server entity-framework wcf

我在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 Output

编辑::经过更多分析:这是错误消息:

  

类型为'System.Data.Entity.DynamicProxies.appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865C6798E272A4515435E1'且数据协定名称为'appUser_CB3ECC520FC14134E25C71D649FF5FCD8A0830D35A865156 {E}如果您正在使用DataContractSerializer或将任何静态未知的类型添加到已知类型的列表中,请考虑使用DataContractResolver-例如,通过使用KnownTypeAttribute属性或将它们添加到传递给序列化程序的已知类型的列表中。

0 个答案:

没有答案