我有一個WCF服務。需要將列拆分爲兩個
我有一個字段(稱爲名稱),現在客戶端想要將此更改爲FirstName(前一半空格前)和LastName(空格後的所有內容)。
此WCF服務正在被不同的應用程序使用,我希望在不破壞任何現有客戶端的情況下完成此操作。
即使它們不存在於數據庫中,我可以添加兩個新的數據庫嗎?這兩個新數據成員的價值將如何確定或獲得?
感謝
我有一個WCF服務。需要將列拆分爲兩個
我有一個字段(稱爲名稱),現在客戶端想要將此更改爲FirstName(前一半空格前)和LastName(空格後的所有內容)。
此WCF服務正在被不同的應用程序使用,我希望在不破壞任何現有客戶端的情況下完成此操作。
即使它們不存在於數據庫中,我可以添加兩個新的數據庫嗎?這兩個新數據成員的價值將如何確定或獲得?
感謝
如果新的數據成員是字符串那麼這應該是罰款,附加數據成員將舊版本的服務客戶端忽略。
請參閱此相關的問題: Adding field to WCF data contract breaks clients?
像這樣的東西應該工作:
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]));
我想在中間層執行此操作 – Tippu 2012-04-11 15:13:50
添加了一個用於在代碼中分割名稱的示例。 – 2012-04-11 15:50:39
請記住,這是正確做一個相當困難的事情。如果某人的姓氏中有空格,比如「Mark Van Duser」或者用大寫字母「E」。 F. Codd'? – JNK 2012-04-11 15:06:09
是的,或者如果你有一個人只有一個名字,就像很多來自非洲的足球運動員一樣......你可能想要先檢查一下是否有空間,然後再考慮是否需要它在名字或SecondName中 – 2012-04-11 15:15:31