0

私はデータベースを設計しました。私の質問をよりよく示すために、それを単純化しました。

TB: CONSULTANTS

      ID        uniqueidentifier

      NAME      NVARCHAR(30)

TB: EXPENSES

      ID                uniqueidentifier

      AMOUNT            money

      CONSULTANTID      uniqueidentifier

CONSULTANTIDはConsultantsTableのFKです、簡単ですよね?

コンサルタントと経費である2つのデータテーブルを含むデータセットを作成しました

コンサルタントIDによる経費の取得などの対応するクエリ

ただし、グリッドビューで表示したいのは次のとおりです。

コンサルタントIDではなく金額とコンサルタントの名前


(ExpenseId、Amount、ConsultantName)を使用してデータテーブルを返そうとすると、スキーマがベースデータテーブルEXPENSES(ExpenseId、Amount、ConsultantId)と一致しないため、エラーが発生します。

BLLから(ExpenseId、Amount、ConsultantName(not id))を取得するにはどうすればよいですか?


2つのテーブルを結合して別のデータテーブルを作成する必要がありますか?ASP.NETサイトでは、これはDALとBLLを作成するための好ましい方法ではないと述べているためです。

または、gridviewのBoundFieldにいくつかの変更を加えることも可能です(可能であれば、2つの異なるアダプターの出力をバインドする方法)。

4

2 に答える 2

0

さて、あなたはDALDBからデータをフェッチし、あなたにDataTable or DataSet適切なものを返すメソッドを作成することができます。

Select c.id as ConsultantId,c.Name as Name,e.amount
from consultant c
inner join experses e
on c.ConsultantId=e.ConsultantId

BALにコンサルタントクラスオブジェクト配列の作成などのビジネスロジックを実行させ、金額の検証を実行させます(金額は0未満にすることはできません)。

BALは、データコントロールとのバインドに使用できるオブジェクトの配列を返しますConsultant(または、BALからdataTableを送り返すこともできます。

Linqは、Linq構文からSQLスクリプトを生成し、特定のタイプのオブジェクトの照合を返す最初のアプローチを使用していると思います。

于 2012-12-24T13:00:37.557 に答える
0

ASP.NETサイトの例から正しい答えを見つけました


BLLを作成する前に、各テーブルアダプタで何が必要になるかを理解する必要があります。

したがって、私の場合、複合SELECTステートメントを使用して、consultantName列とその他の必要な列をExpensesデータテーブルに含める必要があります。

あれは、

SELECT EXPENSEID、AMOUNT、CONSULTANTID、(SELECT CONSULTANTNAME FROM CONSULTANTS WHERE CONSULTANTS.CONSULTANTID = EXPENSES.CONSULTANTID)FROM EXPENSES

そうすれば、このDALから必要なすべてのデータを取得できます。

于 2012-12-24T11:33:57.207 に答える