2

Visual Studio 2010、ASP.NET MVC 3、およびSQL2008R2データベースを使用しています。

これは簡単な作業だと思いますが、言い方がよくわかりません。これは私が持っている現在のコードです。

 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と呼ばれる別のテーブルの同じ値を持つすべてのアイテムに一致する別のリストを取得することです。この部分のやり方がわかりません。

私はこれを十分に説明したと思います。説明が必要な場合はお知らせください。

私は答えを探し続けましたが、私の問題は、ステートメントに2つのDataContextを含めることができることです。2つの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;
    }

これにより、2つの異なるソースからデータをプルできないというエラーが発生しました。それを処理する別の方法はありますか?

ここで何が起こっているかを示すいくつかのサンプルデータがあります。

テーブル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(ex 99213)に渡され、CPT2MODテーブル(B、T)からそれに関連付けられているすべてのMOD値を検索します。次に、MODIFIERsテーブルからそれらのMODを説明とともに返します。(B、B Desc; T、T Desc)。

私が今求めていることをもっとよく理解していただければ幸いです。

解決

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を1つだけ使用し、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 に答える