1

現在の(遅い)Accessデータベースの次の進化として、Silverlight(C#)とSQLServerを検討しています。これまでのところすべてが素晴らしく、DomainServicesを使用して必要なデータを取得しました。私たちのデータベースには、Supervisor_ID、Supervisor_FirstName、Supervisor_LastName、その他多くのフィールドを持つテーブル(Supervisor)があります。MS AccessのDLookup()と同じようにDatabaseから単一の値を取得します。

私がしたいことは、現在のデータベースで整数をとるEntityNameFirstLast(EntityID)と呼ばれる関数を再作成することです。 FirstName = DLookup( "[Supervisor_FirstName]"、 "Supervisor"、 "[Supervisor_ID] = EntityID

)を使用して、[Supervisor_ID] == EntityIDの[Supervisor_FirstName]

私は姓のために同じことを行い、最初と最後の文字列を返す文字列を組み合わせます

私のデータベースから私のDomainService(または何らかの方法で)を通してただ一つの値を取得する方法はありますか? IQueryable GetSupervisorByID(Int SupID)は必要な行全体を返しますが、その行から特定のフィールドを取得するにはどうすればよいですか?

私はまた、 hat私はXAMLでDomainDataSourceを設定して、私が望むデータにバインドすることができますが、私が上で尋ねたものが実行可能かどうか不思議です。

答えて

1

何が必要なのMS-SQLサーバーから単一の値であれば、あなたの要件を達成することができますいくつかの方法があります。

クエリ1.Use連結を行い、その後、あなたのコード

で、その出力を使用するためには、
Select Supervisor_FirstName + ' ' + Supervisor_LastName as Supervisor_FullName From Supervisors Where Supervisor_ID = EntityID 

は今、あなたが作成されます

private string GetSupervisorFullName(string entityID, string connectionString) { 
    string query = "Select Supervisor_FirstName + ' ' + Supervisor_LastName as Supervisor_FullName From Supervisors Where Supervisor_ID = @EntityID"; 
    string supervisorFullname = ""; 

    using(SqlConnection con = new SqlConnection(connectionString)) { 
     SqlCommand cmdSupervisorFullname = new SqlCommand(); 
     cmdSupervisorFullname.Connection = con; 
     cmdSupervisorFullname.CommandText = query; 
     cmdSupervisorFullname.CommandType = CommandType.Text; 

     SqlParameter paraEntityID = new SqlParameter(); 
     paraEntityID.ParameterName = "@EntityID"; 
     paraEntityID.SqlDbType = SqlDbType.NVarChar; 
     paraEntityID.Direction = ParameterDirection.Input; 
     paraEntityID.Value = entityID; 

     cmdSupervisorFullname.Parameters.Add(paraEntityID); 

     try { 
      con.Open(); 
      supervisorFullname = (String) cmdSupervisorFullname.ExecuteScalar(); 
     } catch(Exception ex) { 
      Console.WriteLine(ex.Message); 
     } 

     return supervisorFullname; 
    } 
} 

2.Second方法をSqlCommandオブジェクトを通じて実行し、あなたに興味深い部分のザッツを取得するために上記のクエリを得ることができますあなたの要件のためにSQLのスカラー関数を呼び出し、上記の同じ種類のメソッドを使用してその関数にアクセスします。

最後に、メソッドGetSupervisorFullNameの戻り値を取り、任意のコントロール値を入力します。

LINQtoSQLやその他のORMツールを使用して同じことを行う方法があります。上記2つの方法は、それらを達成するための基本的な方法です。

希望に役立ちます。

+0

これは私が探していたものです。ありがとう、トン!これまで私のために働くようだ! – JSlam23

関連する問題