2009-02-19 75 views
0

我在linq2sql中使用繼承,並且使從客戶機繼承的供應商和採購員成爲實體。我需要能夠將買方升級爲供應商。Linq2sql繼承性轉換

我已經試過:

 Client client = ClientMethods.ValidateId<Client>(clientId); 
     client.ClientTypeId = ClientMethods.CLIENT_TYPE_SUPPLIER; 
     db.SubmitChanges(); 

,但得到「不允許:從‘1’到‘2’繼承鑑別改變會從‘買方’到‘供應商’改變類型」

唯一的解決方案,我可以找到是做到這一點沒有linq2sql和寫一個SP ??

+0

雖然你可以在linq2sql中使用SP,不是嗎?想想我至少聽說過這樣的事情...... – Svish 2009-02-20 11:19:31

回答

1

我想知道爲什麼你甚至有兩個不同的子類,如果它是一種自然的情況,你想從一種類型改變到另一種。我認爲你應該重構你所擁有的東西,並使買方和供應商成爲一個實體。然後,如果您的行爲根據客戶是否爲買方或供應商而有所不同,我會將其解壓縮爲可以設置或添加到客戶端的單獨對象。

0

也許,試圖通過填充買方的屬性的價值來創建一個新的供應商?

+0

如果這是唯一的解決方案,那麼我認爲我會去爭取SP。 – 2009-02-19 10:11:48

1

我只是有同樣的問題,以及由鑑別字段加倍解決*)它爲一個計算列被實際用作鑑別值和一個整數列存儲該值...

*) - 酮的着名解決方案,可能會有令人討厭的副作用,所以要警告