假设我有一个 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
对象。
这样的用法合法吗?我应该预料到这种方法会出现任何问题吗?
最佳答案
这只有在您支持 Multiple Active Recordsets (MARS) 时才有效在你的数据库引擎中。如果没有,您将生成异常。否则,你绝对可以做到这一点。
如果您没有 MARS 支持,您将需要使用 .AsEnumerable
一次从数据库下载所有记录并转换为内存中的可枚举。
这是 another great resource关于 Entity Framework 中使用 MARS 的内容以及没有它不能做什么。
关于c# - 我可以通过同一个 DataContext 对象同时访问多个表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952242/