2009-04-19 6 views
0

私はサーバー/クライアントアプリケーションを開発しようとしています。サーバーはWebサービスの束になります。その考え方は次のようなメソッドを公開することでした。サーバーアーキテクチャとサブソニック

Company GetNewCompany(); //新しい会社オブジェクトを作成します
保存(会社C);
CompanyCollection GetCompany(クエリq);

ここで、クエリオブジェクトはSubsonic 2.1の一部です。しかし問題は、これに対してSubSonicが構築されていないことです。ここで何かを逃したのですか? SOAP上で亜音速のクエリ言語を使用することは不可能ですか?

これはすばらしい機能です。サブソニックを使用してアプリケーションサーバーを作成するのは本当に簡単です。

br ソレン。あなたはIUpdatable語るこの問題を見ることができ亜音速V3を使用したい場合は

答えて

2

http://code.google.com/p/subsonicthree/issues/detail?id=30

これは多少痛みを伴わずに、ADOデータサービスを利用できるようになります。 URI引数を取るDBコンストラクタを使用します。これはおそらくv3の一部ではありませんが、あなたはこのような変更を自分で行うことができます。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using WcfClientTest.NorthwindService; 

namespace WcfClientTest 
{ 
    /// <summary> 
    /// Summary description for WcfTest 
    /// To run these tests, load this project, and somehow get a server running at the URI. 
    /// This can be done by updating the service reference to start the development server. 
    /// </summary> 
    [TestClass] 
    public class WcfTest 
    { 
     private string baseURI = "http://127.0.0.1:49649/Northwind.svc"; 
     private DB ctx; 

     /// <summary> 
     /// Sets up test. 
     /// </summary> 
     [TestInitialize] 
     public void SetUp() 
     { 
      ctx = new DB(new Uri(baseURI)); 
     } 

     [TestCleanup] 
     public void Cleanup() 
     { 
     } 

     [TestMethod] 
     public void Select_Simple_With_Variable() 
     { 
      int categoryID = 5; 
      IQueryable<Product> result = from p in ctx.Products 
             where p.CategoryID == categoryID 
             select p; 

      List<Product> products = result.ToList(); 
      Assert.AreEqual(7, products.Count()); 
     } 

     [TestMethod] 
     public void TestAddNew() 
     { 
      // add customer 
      var c = new Customer 
         { 
          CustomerID = "XXXXX", 
          ContactTitle = "Prez", 
          Country = "USA", 
          ContactName = "Big Guy", 
          CompanyName = "Big Guy Company" 
         }; 
      ctx.AddToCustomers(c); 
      ctx.SaveChanges(); 

      IQueryable<Customer> qCustomer = from cust in ctx.Customers 
              where cust.CustomerID == "XXXXX" 
              select cust; 

      Customer c2 = qCustomer.FirstOrDefault(); 

      Assert.AreEqual("XXXXX", c2.CustomerID); 

      if (c2 != null) 
      { 
       ctx.DeleteObject(c2); 
      } 
      ctx.SaveChanges(); 

      IQueryable<Customer> qCustomer2 = from cust in ctx.Customers 
               where cust.ContactName == "Big Guy" 
               select cust; 
      // Returns null if the row isn't found. 
      Customer c3 = qCustomer2.SingleOrDefault(); 
      Assert.AreEqual(null, c3); 
     } 
    } 
} 

そして、これは、すべてのサービスに存在している。

using System.Data.Services; 
using Northwind; 

namespace NorthwindService 
{ 
    [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults=false)] 
    public class Northwind: DataService<DB> 
    { 
     // This method is called only once to initialize service-wide policies. 
     public static void InitializeService(IDataServiceConfiguration config) 
     { 
      config.SetEntitySetAccessRule("*", EntitySetRights.All); 
      config.UseVerboseErrors = true; 
     } 
    } 
} 

そしてweb.configファイルについて:

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    </system.serviceModel> 
+0

を参照してください:http://blogs.msdn.com/aconrad/アーカイブ/ 2008/12/05/development-an-astoria-data-provider-for-subsonic.aspx それは私がそれを得た場所です。 –

関連する問題