1

L2Eを使用してレコードのコレクションを取得するのに苦労しています。モデルビューは次のとおりです:http: //pascalc.nougen.com/stuffs/aspnet_linq_model2.png

TestCaseにリンクされている1つまたは複数のUserGroupに関連付けられているユーザー識別子があります。ユーザーIDXが関連付けられているすべてのグループのすべてのテストケースを取得したいと思います。

また、2つ(またはそれ以上)に関連付けられているユーザーのすべてのプロジェクトを取得できないことにも気付きました。

これが私がこれまでに行った方法です:

    QASModel.QASEntities qasEntities = new QASModel.QASEntities();
QASModel.User authenticatedUserEntity = (from u in qasEntities.Users
                                         where u.ID.Equals(authenticatedUserId)
                                         select u).FirstOrDefault();
// Get the authenticated user usergroups
var usergroup = authenticatedUserEntity.UserGroups.FirstOrDefault();
// Get all testcases of all user group the authenticated user is associated to
var allTestcases = usergroup.TestCases;
// Get the authenticated user projects based on it's usergroup(s)
var authenticatedUserProjects = usergroup.Projects;

authenticationUserProjectsは、ユーザーが2つのプロジェクトにリンクされている1つのプロジェクトのみを返します。また、allTestcasesは結果を返しませんが、ユーザーが属する同じユーザーグループの1つに関連付けられたプロジェクトに関連付けられたTestCasesには約8つのエントリがあります。

ありがとう

4

2 に答える 2

1

私はあなたの問題がこの行にあると思います:

var usergroup = authenticatedUserEntity.UserGroups.FirstOrDefault();

あなたのコードはUserGroupsそれをすべて取得するべきではありませんUserか?上記の行は1のみを返しUserGroupます。つまり、ユーザーが1つ以上に属している場合UserGroup、2番目の行は返されません。

これを修正するには:

var userTestCases = new List<TestCase>();
var userProjects =  new List<Project>();

foreach(UserGroup ug in authenticatedUserEntity.UserGroups)
{
    userTestCases = userTestCases.Concat(ug.TestCases);

    // Get the authenticated user projects based on it's usergroup(s)
    userProjects = userProjects.Concat(ug.Projects);

    ...
}
于 2011-05-30T20:51:54.130 に答える
0
var usergroup = authenticatedUserEntity.UserGroups.FirstOrDefault();

ユーザーが関連付けられているすべてのユーザーグループが必要なため、おそらく間違っています。いずれの場合も、クエリを簡単に元に戻して、このように機能させることができます

var testcases = from tc in new QASModel.QASEntities().TestCases
where tc.UserGroup.UserId == USERID
select tc

このように、すべてのテストケースを取得するために複数のクエリを実行する必要はありません。各FirstOrDefault、ToList、またはForEachが実際にクエリを実行します。

于 2011-05-30T20:54:34.697 に答える