2012-04-11 8 views
0

WCF 서비스가 있습니다.열을 두 개로 분할해야합니다.

필자는 필드 (이름)를 가지고 있으며 이제 클라이언트가이를 이름 (공백 앞의 첫 번째 절반)과 성 (공백 다음의 모든 부분)으로 변경하려고합니다.

이 WCF 서비스는 여러 응용 프로그램에서 사용되고 있으며 기존 클라이언트를 손상시키지 않고이 작업을 수행하려고합니다.

데이터베이스에 두 개의 새 datamember를 추가 할 수 있습니까? 이 두 개의 새로운 datamembers에 대한 가치는 어떻게 설정되거나 획득 될 것입니까?

감사

이 같은
+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; 세트; }. 이제 두 개의 새로운 datamember를 어떻게 추가합니까? – Tippu

+0

[DataMember]로 추가하십시오. public string FirstName {get; 세트; }, [DataMember] public string 성 {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 

코드에서 이름을 구문 분석하려면, 아래의 코드 예제해야 이름과 성을 잘 처리하십시오. 접두사, 접미사 및 중간 이름을 처리 할 수있는 강력한 구문 분석기가 필요하면 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

코드에서 이름을 분할하는 예제가 추가되었습니다. –

관련 문제