CRM 2011 の調査モジュールを開発しています。このモジュールでは、CRM ユーザーがさまざまな種類の複数の質問を含む調査を作成し、Azure の動的 Web ページを使用して連絡先に回答を求めることができます。これまでのところ、その約 90% を完了しており、データ管理に関連する小さな変更をいくつか追加する必要があるだけです。
現在最適化している部分には、質問の並べ替えが含まれます。CRM には、調査質問と質問の 2 つのエンティティがあります。question は調査の実際の質問を指しますが、surveyquestion はいくつかの追加フィールドを持つ NN 関係エンティティであるため、異なる調査で質問を再利用できます。質問をフォーム上の別の質問とグループ化する必要があるかどうかを示すために使用される「質問」に「グループ」フィールドがあります。「surveyquestion」に「volgorde」という別のフィールドがあり、質問の順序を示すために使用されます。同じ「グループ」を持つすべての質問をまとめて表示し、グループ内の質問 (およびグループ化されていない質問を別のグループとして) を sortorder フィールドで並べ替えたいと考えています。したがって、基本的には、2 つの異なるテーブルの 2 つのフィールドで注文する必要があります。
これは私が現在使用しているコードです。vr.Id と ev.slfn_vraag.Id の両方に関連する行にデータがあるため、vraaglist の結合で nullreferenceexception が発生します。上記のコメント付きのコードが機能するため、orderbyが原因ではないと思います(ただし、ev.volgordeをorderbyに単純に追加することはできません.
public List<slfn_vraag> GetVragenforEnquete(Guid enGuid)
{
//List<slfn_vraag> vraaglist = (from vr in _oContext.slfn_vraagSet
// join ev in _oContext.slfn_enquetevraagSet on vr.Id equals ev.slfn_vraag.Id
// orderby vr.slfn_Groep
// where ev.slfn_enquete.Id == enGuid
// select vr).ToList();
IQueryable<slfn_enquetevraag> enquetevraaglist = (from ev in _oContext.slfn_enquetevraagSet
orderby ev.slfn_volgorde
where ev.slfn_enquete.Id == enGuid
select ev);
List<slfn_vraag> vraaglist = (from vr in _oContext.slfn_vraagSet
join ev in enquetevraaglist on vr.Id equals ev.slfn_vraag.Id
orderby vr.slfn_Groep
select vr).ToList();
return vraaglist;
}
コードはエラーなしでコンパイルされますが、実行すると、質問クエリで NullReferenceException が発生します。誰もこれを修正する方法について何か考えがありますか?
編集: 以下で要求された VS2012 からの例外の詳細。
System.NullReferenceException occurred
HResult=-2147467261
Message=De objectverwijzing is niet op een exemplaar van een object ingesteld.
Source=Microsoft.Xrm.Sdk
StackTrace:
bij Microsoft.Xrm.Sdk.Linq.QueryProvider.TranslateJoin(QueryExpression qe, IList`1 methods, Int32& i, Projection& projection, List`1& linkLookups)
bij Microsoft.Xrm.Sdk.Linq.QueryProvider.GetQueryExpression(Expression expression, Boolean& throwIfSequenceIsEmpty, Boolean& throwIfSequenceNotSingle, Projection& projection, NavigationSource& source, List`1& linkLookups)
bij Microsoft.Xrm.Sdk.Linq.QueryProvider.Execute[TElement](Expression expression)
bij Microsoft.Xrm.Sdk.Linq.QueryProvider.GetEnumerator[TElement](Expression expression)
bij Microsoft.Xrm.Sdk.Linq.Query`1.GetEnumerator()
bij System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
bij System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
bij Enquete_Webform.Data.EnqueteGenerator.GetVragenforEnquete(Guid enGuid) in e:\VS\tfs_products\MS CRM\2011\Enquete\Enquete_Webform\Enquete_Webform\Data\EnqueteGenerator.cs:regel 49
InnerException: