我想爲linqpad
創建驅動程序,有問題:爲linqpad創建DynamicDataContextDriver用C#
當我創建DynamicDataContextDriver
,我必須創建TypedDataContext
類。
- 我應該把什麼呢?
- 它將如何填充?
- 我可以控制它將如何填充?
- 如果我在這裏使用對象數據庫,有什麼我必須牢記的嗎?
我找到了一些答案here,但我找不到所有上述答案。
我想爲linqpad
創建驅動程序,有問題:爲linqpad創建DynamicDataContextDriver用C#
當我創建DynamicDataContextDriver
,我必須創建TypedDataContext
類。
我找到了一些答案here,但我找不到所有上述答案。
類型化的數據的上下文是簡單地用合適的用於查詢的屬性/字段的類。這些屬性/字段通常會返回IEnumerables或IQueryables。例如:
public class TypedDataContext
{
public IEnumerable<Customer> Customers { get { ... } }
public IEnumerable<Order> Orders { get { ... } }
...
}
當您使用Visual Studio創建一種新的項目「LINQ to SQL類」或「ADO.NET實體數據模型」時,Visual Studio爲您創建一個類型化的數據上下文這是一個LINQPad期望的例子。類型化的數據上下文還可以公開方法(例如映射存儲過程或函數) - 實際上它可以暴露對最終用戶有意義的任何事情。
當您執行在LINQPad查詢,有一個連接,LINQPad子類與連接,以便查詢訪問其所有字段/屬性相關聯的類型的數據上下文。這就是爲什麼Customers.Dump()
是一個有效的查詢 - 我們只需訪問Customers
而不必首先實例化類型化的數據上下文。
LINQPad驅動程序可以以兩種方式之一工作。或者它可以像Visual Studio和自動和動態(動態數據上下文驅動器)構建類型化的數據的上下文,也可以從現有的組件由用戶(靜態數據上下文驅動器提供提取類型化的數據的上下文)。當您添加在LINQPad的連接,你會發現,司機在兩個列表框中列出(構建數據上下文自動 = 動態驅動和從自己的組裝 = 靜態驅動程序使用類型化的數據上下文)。
無論何時執行查詢,都會實例化類型化的數據上下文。因爲它的屬性通常會返回延遲評估的IEnumerables/IQueryables,所以考慮「填充」它是沒有幫助的。但是,它需要知道如何訪問基礎數據源,並且這是通過passing arguments into the constructor完成的。
LINQPad保持正常運行查詢的查詢的應用領域還活着,這可能與高速緩存和優化你應該寫一驅動程序對象數據庫有用。除此之外,對象數據庫不應該有任何特殊的考慮。