2012-01-23 11 views
0

CLRトリガーを使用してWCFに値を渡すと、すべて正常に機能しますが、定数値を渡すとWCFを通過しても例外がスローされません。SQLからWCFへの値の受け渡し

CLRトリガー

public partial class Triggers 
{ 

    public static EndpointAddress endpoint = new EndpointAddress(new Uri("http://localhost:8000/services/myservice")); 
    public static WSHttpBinding httpBinding = new WSHttpBinding(); 
    public static ServiceClient.ServiceReference1.ServiceContractClient myclient = new ServiceClient.ServiceReference1.ServiceContractClient(httpBinding, endpoint); 
    public delegate void MyDelagate(String crudType); 
    [SqlProcedure()] 

    [Microsoft.SqlServer.Server.SqlTrigger(Name = "WCFTrigger", 
     Target = "tbCR", Event = "FOR UPDATE, INSERT")] 
    public static void Trigger1() 
    { 
     SqlCommand cmd; 
     SqlTriggerContext myContext = SqlContext.TriggerContext; 
     SqlPipe pipe = SqlContext.Pipe; 
     SqlDataReader reader; 

     if(myContext.TriggerAction== TriggerAction.Insert) 
     { 
      using (SqlConnection conn = new SqlConnection(@"context connection=true")) 
      { 
       conn.Open(); 
       cmd = new SqlCommand(@"SELECT * FROM tbCR", conn); 
       reader = cmd.ExecuteReader(); 
       reader.Read(); 

       //get the insert value's here 
       string Name; 
       Name = reader[1].ToString(); 
       reader.Dispose(); 
       myclient.InsertOccured(Name); 
       } 
      } 
     } 

    } 
} 

インタフェース

namespace SampleService 
{ 
    [ServiceContract] 
    interface IServiceContract 
    { 
     [OperationContract] 
     void UpdateOccured(); 
     [OperationContract] 
     void InsertOccured(String Name); 
    } 
} 

契約

namespace SampleService 
{ 
    class MyService : IServiceContract 
    { 
     public void InsertOccured(string Name) 
     { 
      Console.WriteLine("Insert Occured",Name); 
     } 

    } 
} 

たびに私inser WCFは「Insert Occured」のみを表示しますが、「Insert Occured、Test」を期待していました。

SLQ Tirggerから一定の価値を得るために私がやるべきことを教えてもらえますか?

答えて

1

サービス操作の実装では、文字列パラメータをConsole.WriteLine()文字列テンプレートに追加する必要があります。言い換えれば: http://msdn.microsoft.com/en-us/library/828t9b9h.aspx

+0

おかげでたくさんのremarkrm:

Console.WriteLine("Insert Occured, {0}",Name); 

あなたはConsole.WriteLineを、ここで複合書式設定についての詳細を見つけることができます。 – Usher