2

我正在使用带有 SQL 2008 R2 数据库的 Visual Studio 2010、ASP.NET MVC 3。

我相信这是一项简单的任务,但我不知道如何措辞。这是我拥有的当前代码。

 public static IEnumerable GetAPCBundledCodesData(string CPTCode)
    {

        var result = (from item in new VADataContext().CPT2MODs
                      where item.CPT == CPTCode
                      select new { item.MOD }).ToList();
        return result;
    }

这将拉取 CPTSMODs 表中的项目列表并将其返回。我想要做的是获取该结果并获取另一个列表,其中包含与具有相同字段 MOD 的另一个名为 Modifiers 的另一个表中具有相同值的每个项目匹配的列表。我不确定如何做这部分。

我希望我已经解释得足够好。让我知道是否需要任何澄清。

我一直在寻找答案,发现我的问题是我可以在 on 语句中有两个 DataContext。如果不是两个 DataContext,我什至不确定这是否可行,但我尝试这样做:

public static IEnumerable GetAPCBundledCodesData(string CPTCode)
    {

        var result = (from mod in new VADataContext().MODIFIERs
                      join cpt2mod in new VADataContext().CPT2MODs on mod.MOD equals cpt2mod.MOD
                      where cpt2mod.CPT == CPTCode
                      select new { mod.MOD, mod.SHORT }).ToList();
        return result;
    }

这导致错误提示我无法从两个不同的来源提取数据。有不同的处理方法吗?

这里有一些示例数据来显示这里发生了什么。

表 CPT2MOD

CPT**   MOD**
31624   TC
31624   A
31624   DC
99213   B
99213   T
00100   AS

表修饰符

MOD**   SHORT**
TC      TC Desc
A       A Desc
DC      DC Desc
B       B Desc
T       T Desc
AS      AS Desc

CPT 代码将被传递给 GetAPCBundledCodesData(例如 99213),它将从 CPT2MOD 表(B,T)中查找与其关联的所有 MOD 值。然后它将从 MODIFIERs 表中返回这些 MOD 以及描述。(B,B 描述;T,T 描述)。

我希望你现在能更好地看到我在问什么。

解决方案

public static IEnumerable GetAPCBundledCodesData(string CPTCode)
        {
            using (var dc = new VADataContext()){
            var result = (from a in dc.CPT2MODs
                          where a.CPT == CPTCode
                          join b in dc.MODIFIERs on a.MOD equals b.MOD
                          select new { b.MOD, b.SHORT }).ToList();
            return result;
            }
        }
4

1 回答 1

1

仅使用一个 ObjectContext - 并使用using(非常重要):

using(var dc = new VADataContext()){
  var result = (from mod in dc.MODIFIERs 
                  join cpt2mod in dc.CPT2MODs on mod.MOD equals cpt2mod.MOD 
                  where cpt2mod.CPT == CPTCode 
                  select new { mod.MOD, mod.SHORT }).ToList(); 
  return result; 
}

顺便说一句- 实体框架通常不会调用它生成的类DataContext- 这是 Linq to SQL 的事情 - 你确定你实际上正在使用实体框架吗?它实际上与修复没有任何关系,它只是要求澄清。

于 2012-08-29T07:21:23.307 回答