如何在Web服务中“包装”Linq2Sql datacontext?

时间:2011-08-28 20:58:05

标签: web-services linq-to-sql

相关人员:Visual Studio 2010, WCF Web服务, LINQ2SQL, .Net 4.0

如果这是一个愚蠢的问题,请原谅我,但我相信我已经看到了类似于我正在尝试做的事情。

我们有一个用于读/写数据库的Linq2Sql数据上下文。我们希望为某些供应商公开API到数据库。我似乎想起了一种通过Web服务公开大多数数据上下文功能的方法,而无需手动为所有CRUD方法创建包装器。那里的任何人都知道如何做到这一点?我似乎记得只用几行代码来查看通过Web服务公开的数据上下文。

我们还需要根据权限拒绝访问某些方法,但可能会自己解决这个问题。

2 个答案:

答案 0 :(得分:3)

不确定您所看到或引用的内容......但WCF数据服务似乎就是您所追求的 - 请查看http://msdn.microsoft.com/en-us/data/bb931106.aspx

答案 1 :(得分:2)

@Yahia让我指出了正确的方向。这篇文章几乎是我所寻找的,但是处理ADO.Net实体数据模型而不是LINQ数据上下文。差不多...... Data Access with ADO.Net Data Services

所以,事实证明答案很简单。

  1. 创建一个新的ASP.Net Web应用程序。
  2. 右键单击Web应用程序。
  3. 添加 - >新商品 - > WCF数据服务。
  4. 修改代码以支持您的上下文:

    using System.Data.Services;
    using System.Data.Services.Common;
    
    namespace DelvingWare.Data.FilestreamServer.WebServices
    {
        public class WcfDataService1 : DataService<MyDataContext>
        {
            // This method is called only once to initialize service-wide policies.
            public static void InitializeService(DataServiceConfiguration config)
            {
                // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
                // Examples:
                config.SetEntitySetAccessRule("MyEntitySet", EntitySetRights.ReadSingle);
                config.SetServiceOperationAccessRule("MyEntitySet", ServiceOperationRights.ReadSingle);
                config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
            }
        }
    }
    
  5. 构建 - &gt;右键点击服务 - &gt;在浏览器中查看。瞧!