2011-02-27 12 views
0

この質問は、私が以前に持っていた質問と実際関係しています。流暢NHibernate:クラスの識別子が与えられた複数の行

私は3つのフィールドからなる複合主キーを持つデータベーステーブルTItemListUserPermを持っていました。これをマップする方法で苦労した後

TItemListUserPerm

  • ユーザーID(PK、FK)
  • TItemListID(PK、FK)
  • TItemListPermID(PK、FK)

、私は最も簡単なことは、複合主キーを削除し、一意の主キーを追加し、TItemListUserPermを次にマッピングできるエンティティにするという結論に達しました。

結果は以下のとおりであった:

public class TaskItemListUserPermission { 
    public int Id { get; set; } 
    public User User { get; set; } 
    public TaskItemList TaskItemList { get; set; } 
    public TaskItemListPermission Permissions{ get; set; } 
} 

マップだった:

public class TaskItemListUserPermissionMap : ClassMap<TaskItemListUserPermission> { 
    public TaskItemListUserPermissionMap() { 
    Table("TtemListUserPerm"); 
    Id(x => x.Id, "TaskItemListUserPermId"); 
    References(x => x.User, "UserId"); 
    References(x => x.Permissions, "TItemListPermID"); 
    References(x => x.TaskItemList, "TItemListID"); 
    } 
} 

public class TaskItemListMap : ClassMap<TaskItemList> { 
    Table("TItemList"); 
    Id(x => x.Id, "TItemListID"); 
    .... 
    HasMany<TaskItemListUserPermission>(x => x.UserPermssions) 
    .Table("TItemListUserPerm") 
    .KeyColumn("TItemListId") 
    .AsBag(); 
} 

すべてが素晴らしい作品。私は結果を得る。私はしたいが、何かが、私は私は私はこのようなLINQクエリを記述するまでに作業できることを考えていない、まさに:

List<TaskItemList> taskItemLists = taskItemListRepository.GetAll() as List<TaskItemList>; 
    List<TaskItemListUserPermission> permissions = taskItemLists.First().TaskItemListUserPermission.ToList(); 

    var myName= permissions.Where<TaskItemListUserPermission>(x => x.User.FirstName == "FirstNameOfUser" && x.User.LastName == "LastNameOfUser"); 

私は、コードをステップ実行しています、私はエラーを取得する:与えられたの複数の行を識別子が見つかりました:IdOfUser、ClassNameOfObject。

私は同じ識別子を持つユーザーのグループを取得していることを知っています。それらは列挙可能なリストにあるエンティティの一部です。誰もがなぜ私はエラーを取得しているか、それを修正するか回避する方法についていくつかの光を当てることができますか? Linq-To-NHibernateを使用する必要がありますか?

+0

IdOfUserとClassNameOfObjectは何ですか? –

+0

ところで、できるだけ具体的にお聞かせください。問題の実際の原因を突き止めて質問してください。人々は通常、時間を費やしたくない。 –

+0

アドバイスをいただきありがとうございます。今後の質問のために検討します。残念ながら、問題の実際の原因は何かを知りませんでした。自分で見つけることができない質問(ブログ、ニュースグループなどの調査)が行われたときにのみ質問しました。私は問題の原因を突き止めて、最終的に解決策を見つけました。 – DerHaifisch

答えて

0

問題は最終的に、クラス、特にUserクラスの不一致に終わった。クラスマップ内の参照をエラーがなくなるまでコメントアウトすることによって、ソースを絞り込んだ。私がそれをしたら、私はその問題を推論することができました。私はこの質問を見て、それに答えようとした人に感謝します。