2014-11-19 2 views
1

네 개의 매개 변수를 허용하는 WCF 서비스에 대한 메서드가 있습니다. 메서드는 MS SQL 데이터베이스에서 데이터를 업데이트하기위한 update 문을 처리합니다. 내가 만난 문제는 절을 매개 변수로 보내는 방법을 찾을 수 없다는 것입니다. 것은 직렬화 할 수 없기 때문에 WCF는 QueryBuilder의 개체를 받아 들일 수 없다는 것입니다. WCF에 대한 메서드는 asp.net 클라이언트 페이지에서 호출됩니다 (아약스 물건이 아님).WCF 서비스에 WHERE/절 전달

  1. 테이블 (문자열)
  2. 열 (문자열 [])
  3. 값 (문자열 [])
  4. 절 (????)

절이 같은되어야 WHERE 3 차원 배열 예 :

clause.Add("users.id","=",1); 

내 cu 누락 된 절 rrent 방법

public bool SqlUpdate(string table, string[] columns, string[] values,??? clause) 
{ 
    bool success = false; 
    DbDataReader dbDataReader = null; 
    try 
    { 
     DbCommand command = new System.Data.SqlClient.SqlCommand(); 
     UpdateQueryBuilder update = new UpdateQueryBuilder(); 
     update.SetTable("users"); 
     update.AddAssignment("firstName", "ChangedName"); 
     //loop through clauses (it can have multiple clauses) if necessary 
     update.Where = new SimpleWhere("users", "id", Comparison.Equals, 4);  //this is where I need to input clause 
     success = true; 
    } 
    catch (Exception ex) 
    { 
     WriteError(ex.ToString()); 
     success = false; 
    } 
    return success; 
} 

UpdateQueryBuilder는() code-engine.com에 의해 매개 변수화 된 쿼리를 작성하기위한 클래스입니다. 소스 코드를 찾을 수 있습니다 here

+5

[OData/WCF Data Services] (http://msdn.microsoft.com/en-us/library/cc668792(v=vs.110).aspx)를 참조하십시오. 당신이 바퀴를 다시 발명 한 것처럼? – StuartLC

+0

그냥 바퀴가 나중에이 WFC와 asp.net 응용 프로그램의 구조가 작성되었을 때 나중에 발명했다고 말해 보자. 내가 말할 수있는 것은, 나는 이런 종류의 결정을 내리는 사람이 아니다. – SuperManSL

답변

0

Dynamic Linq (System.Linq.Dynamic)을 (를) 찾으십시오. 쿼리 문자열을 클라이언트에서 서버로 전달한 다음 동적 Linq를 사용하여 호출 할 수 있습니다. http://dynamiclinq.codeplex.com/documentation

+0

마인드 공유 및 예를 들어주세요. 내가 제대로 이해하는지 모르겠다. – SuperManSL