首页 文章

wcf将linq发送到sql DataContext

提问于
浏览
0

假设我有一个linq到sql类 . 我想通过wcf返回对象datacontext . 我已经使数据库单向 . 我把WCF工作getString()只是为了证明如果我注释掉ToolboxDataContext的所有内容,wcf服务是有效的 .

public interface Database()
{
   [OperationContract]
   ToolboxDataContext getCtx();

   [OperationContract]
   string getString();
} 
public class test: Database
        public ToolboxDataContext getCtx()
        {

          ToolboxDataContext  ctx = new ToolboxDataContext ();
          return ctx;
        }
 public string  getString()
        {
            return "WCF WORKS";
        }


[DataContract]
    public class Testing //my svc file
    {
        [DataMember]
        public ToolboxDataContext ctx;
        [DataMember ]
        public string Id;
    }

2 回答

  • 0

    您的 ToolboxDataContext 是实体框架DataContext吗?假设它是......

    我来自接收它的客户端'm not sure sending the entire data context object over the wire is really what you want to do. It likely won' t "work" . 比如,你将无法对它运行一个Linq语句并点击数据库pr任何东西......你可能只想返回数据实体(而不是整个上下文),如图所示here (MSDN),或者可能考虑使用WCF Data Services代替?

    我想一个好问题是;客户端将如何处理DataContext?

  • 3

    这似乎不是一个真正的问题(你的问题是什么,你在问什么?)

    但假设这只是你想要反馈的想法 - 这没有意义 . 它相当于向客户端发送数据库连接 . 您无法序列化和反序列化连接,然后重复使用它 .

    datacontext是一个对象,因此一旦确保使用正确的属性修饰它就应该能够序列化它,但它封装了数据库连接 . 无法序列化数据库连接 . 从概念上讲,描述该连接的所有信息都可以通过WCF进行序列化和交付,但这可能会暴露您系统中的安全漏洞 .

    使用LINQ-to-SQL DataContext的正确模式是实例化它,执行您需要的任何数据库操作并处置它 . 最好不要长时间保留它,绝对不要在服务之外发布它 .

相关问题