c# - Linq 实体与 WCF

标签 c# asp.net linq wcf linq-to-entities

我的所有实体都在我的 edmx 文件中的一个单独的项目中,我使用 WCF 服务将它们公开给我的客户端应用程序。

这意味着我不必为我的客户端应用程序提供指向包含 edmx 文件的项目的直接链接。那会很糟糕,因为它包含用于查询数据库的对象。

但是只有我的 WCF 服务使用的实体可以从我的客户端应用程序访问。例如,因为我的服务中有以下代码:

public MyClass GetMyClass()
{
     return new MyClass();
}

.. 我可以在我的客户端应用程序中使用 access MyClass,例如:

myServiceInstance.MyClass cls = new  myServiceInstance.MyClass()

如果我的 edmx 文件中有一个名为 MyClass2 的实体,我想在我的客户端应用程序中使用该实体怎么办!如何在不给我的客户直接链接到我的 edmx 文件项目或在我的服务层中创建返回 MyClass2 的无用方法的情况下实例化它

其他人在做什么?

非常感谢

最佳答案

我们创建了一个单独的项目,其中包含域传输对象类,用作我们各种内部 WCF 服务的数据契约。然后我们与这些内部服务共享契约(Contract)项目。我们有一个数据服务;这些方法会在存储/检索之前/之后将这些域对象转换为/从实体对象转换。同时,外部服务使用从 XSD 和 WSDL 文件生成的标准代理,并转换到/从共享域传输模型。

我们不得不这样做,因为对象上下文(还)不能通过 WCF 移植,很遗憾。

针对您的情况的一些注意事项:

  1. 如果您的客户端应用程序外部您的系统,它不应该知道您的 EDMX 或其类的任何信息。它应该只知道您的 WSDL 和 XSD。
  2. 如果您的客户端应用程序是内部,那么尝试共享 EF v1 中的实体类是没有用的,因为它还没有得到正确支持。您需要传输的不仅仅是类/对象 - 您还需要上下文,它可以保持更改跟踪,并且现在不能通过 WCF 直接完成。

关于c# - Linq 实体与 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220982/

相关文章:

c# - 验证可执行文件是否已签名(signtool 用于签署该 exe)

asp.net - 由于映射,EF 继承的对象插入失败

c# - 如何加入两个列表?

c# - 共享字典值

c# - 使用 lambda 表达式查询和转换数据

asp.net - 在发布时自动压缩 html 和 css?

c# - page_load 和 onLoad 的区别

c# - 带有 WHERE 条件的 XElement LINQ 失败

c# - 复杂的 C# Linq 算法

c# - .Net AssemblyName.version 构建与修订