public void RelationsWithCompositeKey()
        {
            // User HasAndBelongsToMany Groups
            // Groups HasAndBelongsToMany Users
            // User HasMany Groups
            //
            ActiveRecordStarter.Initialize(GetConfigSource(),
                                           typeof(Group),
                                           typeof(Agent),
                                           typeof(Org));
            Recreate();

            Agent.DeleteAll();
            Org.DeleteAll();
            Group.DeleteAll();

            Org org = new Org("org1", "Test Org.");

            org.Save();

            Group group1 = new Group();

            group1.Name = "Group1";
            group1.Save();

            Group group2 = new Group();

            group2.Name = "Group2";
            group2.Save();

            AgentKey agentKey1 = new AgentKey("org1", "rbellamy");
            Agent    agent1    = new Agent(agentKey1);

            agent1.Save();
            agent1.Groups.Add(group1);
            group1.Agents.Add(agent1);
            agent1.Save();
            agent1.Groups.Add(group2);
            group2.Agents.Add(agent1);
            agent1.Save();

            AgentKey agentKey2 = new AgentKey("org1", "hammett");
            Agent    agent2    = new Agent(agentKey2);

            agent2.Groups.Add(group1);
            agent2.Save();

            using (new SessionScope())
            {
                org    = Org.Find(org.Id);
                group1 = Group.Find(group1.Id);
                group2 = Group.Find(group2.Id);
                agent1 = Agent.Find(agentKey1);
                agent2 = Agent.Find(agentKey2);

                Assert.IsNotNull(org);
                Assert.IsNotNull(group1);
                Assert.IsNotNull(group2);
                Assert.IsNotNull(agent1);
                Assert.IsNotNull(org.Agents, "Org agent collection is null.");
                Assert.IsNotNull(group1.Agents, "Group1 agent collection is null");
                Assert.IsNotNull(group2.Agents, "Group2 agent collection is null");
                Assert.IsNotNull(agent1.Groups, "Agent group collection is null.");
                Assert.IsNotNull(agent1.Org, "Agent's org is null.");
                Assert.AreEqual(2, group1.Agents.Count);
                Assert.AreEqual(2, agent1.Groups.Count);
                Assert.AreEqual(1, agent2.Groups.Count);

                foreach (Agent agentLoop in org.Agents)
                {
                    Assert.IsTrue(agentLoop.Groups.Contains(group1));
                }
            }
        }