[英]Can I access more than one table via the same DataContext object simultaneously?
假設我有一個DataContext
對象並同時訪問兩個表:
using( var context = new DataContext( connectionString ) ) {
foreach( firstTableEntry in context.GetTable<FirstTable>() ) {
switch( firstTableEntry.Type ) {
case RequiresSecondTableAccess:
{
var secondTable = context.GetTable<SecondTable>();
var items = secondTable.Where( item => item.Id = firstTableEntry.SecondId );
foreach( var item in items ) {
handleItem( item );
}
}
default:
// not accessing the second table
}
}
請注意,在對其他表進行查詢時,我不會停止使用第一個查詢結果,並且始終使用相同的DataContext
對象。
這種用法合法嗎? 我應該期待這種方法有什么問題嗎?
只有在數據庫引擎中支持多個活動記錄集(MARS)時 ,這才有效 。 如果沒有,您將生成異常。 否則,你絕對可以做到這一點。
如果您沒有MARS支持,則需要使用.AsEnumerable
一次從數據庫下載所有記錄並轉換為內存可枚舉。
這是關於實體框架中使用MARS的內容的另一個很好的資源 ,以及如果沒有它,你不能做什么。
AS大衛評論道。 我會添加他的信息...請參閱WEB.CONFIG,如下所示,連接字符串中的MARS = True
<connectionStrings>
<add name="ContextNameXYZ" connectionString="Data Source=ServerName;Initial Catalog=DBName;Integrated Security=True;MultipleActiveResultSets=True;App=EntityFramework"
providerName="System.Data.SqlClient" />
</connectionStrings>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.