0

.Netの無関係なテーブルにバインドするための最良の方法を見つけようとしています。いくつかの関連するテーブルといくつかの関連しないテーブルを含むADO.NetEntityデータモデルがあります。

たとえば、次のテーブルがあります。KEY_VALUE_LKP列LKP_TEXT、LKP_VALUE、LKP_TYPE REQUEST_DET列REQUESTNO、USERID、およびREQ_STATUS USER_DET列USERNAME、USERID

REQUEST_DETはKEY_VALUE_LKPに関連しています。ここで、REQ_STATUS=LKP_VALUEおよびLKP_TYPE="REQUEST_CRITICALITY"ですが、データベースで定義されていないこの関係REQUEST_DETは、データベースで定義されているUSER_DETとの外部キー関係を持っています。

モデルを作成すると、3つのテーブルと、USER_DETがREQUEST_DETに関連しているという事実がわかります。

FORMVIEWを使用して、リクエストデータ(REQUEST_DET EntityDataSource)にバインドし、関連するテーブル(USERNAME、REQUESTNO)のリクエストに関連する情報を確認できますが、REQ_STATUSの数値を取得します。

私がやりたいのはLKP_TEXT値を取得することですが、KEY_VALUE_LKPテーブル間に定義された関係がないことを確認すると、EntityDataSourceの「Include」属性は機能しません。

2番目のEntityDataSourceをWebフォームに追加し、それをKEY_VALUE_LKPテーブルにリンクして、where = "it.LKP_TYPE='REQUEST_CRITICALITY'"を追加しました。これをDropDownにバインドし、コードビハインドで選択した値を設定できることはわかっていますが、これをドロップダウンではなくラベルにバインドする必要があります。

それで、REQUEST_DET EntityDataSourceにバインドされたフォームビュー内から、ラベルを別のEntityDataSourceにバインドできますか?

よろしくお願いします、-J

4

1 に答える 1

0

Entity SQL でこれを行う方法を見つけました。以下は同様の例です。

string eSql = @"SELECT VALUE LKP FROM
Key_Value_LKP as LKP where
LKP.LKP_TYPE='REQUEST_CRITICALITY' and LKP.LkpValue=@lkpValue";

ObjectQuery<Key_Value_LKP> statusQuery = ctx.CreateQuery<Key_Value_LKP>(eSql);
ObjectParameter lkpValue = new ObjectParameter("lkpValue",lkpValue.ToString());
statusQuery.Parameters.Add(lkpValue);

string REQ_STATUS= statusQuery.First().LkpText;

Label lState = (Label)fvRun.Row.FindControl("REQ_STATUSLabel");

//set state to exisitng run state
lState.Text = REQ_STATUS;
于 2009-07-01T19:58:00.367 に答える