2012-04-11 25 views
0

私はWCFサービスを持っています。2つの列に分割する必要があります

私はフィールド(名前)を持っていますが、クライアントはこれをFirstName(スペースの前半)とLastName(スペースの後のすべて)に変更したいと考えています。

このWCFサービスはさまざまなアプリケーションで使用されており、既存のクライアントを破棄することなくこれを実現したいと考えています。

データベースに存在しないにもかかわらず2つの新しいdatamemberを追加できますか?この2つの新しいデータメンバーの価値がどのように設定されるのでしょうか?このような

+3

ベア:

は、この関連の質問を参照してください。もし誰かが 'Mark Van Duser'のような姓のスペースを持っていたり、イニシャルで' E. F.コッド? – JNK

+0

うん、もしかしたらアフリカから来たかなりのサッカー選手のように、名前が一人しかいない人がいるなら、それを分割しようとする前にスペースがあるかどうかチェックして、 FirstNameまたはSecondNameで –

答えて

1

新しいデータメンバが文字列の場合、これは正常である必要があります。追加のデータメンバは、古いバージョンのサービスクライアントによって無視されます。これを正しく行うにはかなり難しいことですが心の中で Adding field to WCF data contract breaks clients?

+0

列を追加すると問題はありませんが、データの取得はどうですか。私は以下のdatamember [DataMember]を持っています。 public string Name {get;セット; }。 2つの新しいdatamemberを今どのように追加しますか? – Tippu

+0

[DataMember]として追加します。public string FirstName {get;セット; }、[DataMember] public string Surname {get;セット; }(またはそれに類するもの)、データアクセスレイヤーを更新してそれに応じてデータを読み込みます。 – DaveRead

5

何かが動作するはず

ありがとう:

DECLARE @FullName VARCHAR(255) 
SET @FullName = 'James Johnson' 

SELECT SUBSTRING(@FullName, 1, CHARINDEX(' ', @FullName) - 1) AS FirstName, 
     SUBSTRING(@FullName, CHARINDEX(' ', @FullName) + 1, LEN(@FullName)) AS LastName 

このような上記のルックスからの出力:コード内で名前を解析する

 
FirstName LastName 
------------ ---------------- 
John   Doe 

、SHOULD次のコード例姓と名義でうまく動作します。接頭辞、接尾辞、および中間名を処理できる堅牢なパーサが必要な場合は、this articleを参照してください。

var names = ("James Johnson").Split(Convert.ToChar(" ")); 
if (names.Length > 0) 
    Response.Write(string.Format("First: {0}, Last: {1}", names[0], names[1])); 
+0

中間層でこれを実行したい – Tippu

+0

コードで名前を分割する例を追加しました。 –

関連する問題