c# - 我可以通过同一个 DataContext 对象同时访问多个表吗?

标签 c# .net sql-server-2008 datacontext

假设我有一个 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/

相关文章:

.net - 计算两个日期之间的月数

c# - 有人举例说明如何在 SQL Server 2008 中插入 CLR?

c# - NEST 搜索整个文档 C# Elasticsearch

c# - ServiceStack 自动查询 - 如何忽略类中的属性

c# - 如果线程还在等待,异步连接的目的是什么?

c++ - 如何将系统事件从驱动程序发送到应用层?

c# - 错误处理的设计模式

c# - 确定字符串是否在字符串数组中出现多次 (C#)

c# - 如何在 C# 中从 SQL Server 验证 DPFP 指纹

performance - 跟踪 ORM 性能