2008-10-10 73 views
2

在使用Linq-to-SQL的數據庫層中實現額外功能的最佳方法是什麼?目前我正在尋找實現基於預設和類似任務添加信息的功能?何處爲數據庫層添加額外功能(Linq-to-SQL)

插入,更新和刪除操作需要訪問DataContextTable類,否則無法訪問上下文。我見過使用Singleton的解決方案,但它看起來像一個黑客攻擊,我想知道是否有其他人遇到這個問題以及你的解決方案是什麼?是否有更好的方法來實現類似的功能。

我希望將此功能添加到數據庫層的原因是我有幾個應用程序都使用相同的數據庫對象,我希望能夠從所有應用程序使用這些功能,所以我不必重寫很多代碼。


這不完全是我的意思。我希望能夠執行復雜的操作,例如更新一個表格並根據第一個表格的信息將記錄添加到另一個表格。

說我選擇了一個客戶記錄,我想用信息更新它,當發生這種情況時,我希望它向「更新」表中添加另一條記錄以跟蹤更新發生的時間以及發生的時間。這僅僅是一個例子。需要做的事情可能會更復雜。

基本上我想添加一個方法到一個表對象來執行修改該表中的特定行,然後插入和更新其他對象。我知道你可以使用部分類,而且我已經廣泛地做到了。

例子:

db.Customers.Where(c => c.CustomerID == 5).AddOrder(orderDetails); 

我覺得我真的不能把我的問題變成文字,使其理解:)

回答

0

我討厭這樣說,但對於存儲過程?

在我的項目中,無論我們想要提供的額外功能如何,我們都堅持使用部分類。數據上下文類標記爲部分,因此您可以將方法添加到上下文,而無需擔心重新生成工作環境。

1

Linq to SQL中的實體類是部分的。你可以用你需要的規則來擴展它們。

或者您可以從Linq到SQL實體構建自己的業務實體。然後,您的商業實體將包含何時做什麼的規則。

1

如果在添加周圍LINQ一些包裝功能或通常任何下課後是純粹的,你能不能用靜態輔助方法沿着這些線路使用及以上C#3的擴展方法的方法:

public static class StringExtensions 
{ 
    public static int ToInt(this string oString) 
    { 
     return int.Parse(oString); 
    } 
} 

這樣,你可以有一個靜態幫助類提供特定的幫助功能特定的類,你可以在項目之間移植或可能查找到一個單獨的DLL,只需導入需要的地方?