场景是我有 3 层/物理机;
Tier1: Client(UI),
-- Firewall 1--
Tier2: WCF Facade,
-- Firewall 2--
Tier3: WCF proper, DB Access Layer, Entity Framework(project with edmx fiels), DB
从第 3 层开始,在 WCF 中,我在各种操作合同(方法)中返回实体(表);
从第 2 层开始,在 WCF 外观中,我添加了对 WCF Proper 的服务引用,并且可以访问实体对象,包括它们的关系(链接表)等;然后我尝试在WCF Facade的各种操作契约中,根据需要暴露一些实体对象;
从第 1 层开始,将 WCF 外观添加为服务引用并在设计时访问方法没有问题,但在运行时出现错误“底层连接已关闭。连接已意外关闭”。
我已经知道这与超时无关,而是实体无法在 tier1 和 tier2 之间序列化的事实;如果我返回没有链接关系的单个实体,则此操作不会出错。
Q1。如何在层之间传递 EntityFramework 实体(其中包含子/父实体)?(不管合适不合适)
Q2。在 Tier2 和 Tier3 之间传递所述实体没有问题,并且关系顺利通过;为什么第 1 层和第 2 层之间的不同使其突然不可序列化?