mvc3でアプリケーションを開発中です。
2つのドロップダウンがあり、最初のドロップダウンで選択された値に基づいて2番目のドロップダウンが設定されます。 最初のドロップダウンはコースであり、選択されたコースに基づいて、2番目のドロップダウンでコースが利用可能な州が設定されます。
Foreg.ifコースは 'MCA'で、州はマハラシュトラ、ラージャスターンなどでなければなりません。 これは私が正常に動作しているajax関数を書いている。 しかし、問題は、一度に1つの状態しか取得できないので、一度に複数の状態をフェッチできないことです。MVC3でIcollectionを反復処理する方法nhibernate
HobbyHomeAdress表は、私はいくつかの他の方法でフェッチProvincialStateIDが含まれています
私は、州名を取得するために、次のコードを書かれています。 次に、その値をProvincialStateテーブルのProvincialStateIDの値と比較し、そのテーブルのデータを取得しますが、最後のレコードのみを返します。
public ICollection<ProvincialState> FetchStateByStateid(ICollection<HobbyHomeAddress> hobbyhomeaddresslist)
{
log.Debug("Start");
ISession session = DataAccessLayerHelper.OpenWriterSession();
ITransaction transaction = session.BeginTransaction();
ICollection<ProvincialState> provincialstate = null;
try
{
foreach (var state in hobbyhomeaddresslist)
{
provincialstate = session.CreateCriteria(typeof(ProvincialState))
.Add(Expression.Eq("ProvincialStateID", state.ProvincialState.ProvincialStateID))
.List<ProvincialState>();
}
transaction.Commit();
}
catch (SessionException ex)
{
if (transaction != null && transaction.IsActive)
transaction.Rollback();
log.Error(ex);
provincialstate = null;
}
finally
{
if (transaction != null)
transaction.Dispose();
if (session != null && session.IsConnected)
session.Close();
log.Debug("End");
}
return provincialstate;
}
thanx 4返信私は説明を理解しましたが、私は 'AddRange()'として何の機能も持っていません。 – user1274646
これは、n + 1のクエリで問題が発生することを認識しています – Baz1nga
@ user1274646:provincialstateの定義をICollection <>からList <>に変更しましたか? ICollectionにはAddRange、Listがありません。 ListはICollectionを実装しているので、ListをICollectionとして返すことができます。 –