Заполнение таблицы ссылок в отношении многие ко многим - PullRequest
0 голосов
/ 17 февраля 2011

Я пытаюсь справиться с EF4 CTP5.У меня есть два класса, которые имеют отношение многих ко многим: Member и MemberGroup.Код CTP5 Сначала сгенерировал две таблицы (Members и MemberGroups), а также третью с именем MemberGroupMembers, которая имеет два столбца (MemberGroupId и MemberId). Пока все так, как я и ожидал.Я заполнил базу данных некоторыми членами и группами пользователей.Проблема в том, что я не могу найти, как назначить одну или несколько MemberGroups для члена, что приведет к вставке строки в таблицу MemberGroupMembers для каждой MemberGroup, которой назначен участник.

    public class Member
{
    public int Id { get; set; }

    public Guid SecureId { get; set; }

    public DateTime JoinedOn { get; set; }

    public virtual ICollection<MemberGroup> MemberGroups { get; set; }
}

public class MemberGroup
{
    public int Id { get; set; }

    public string Name { get; set; }

    public DateTime CreatedOn { get; set; }

    public virtual ICollection<Member> Members { get; set; }
}

public class CTP5testContext : DbContext
{
    public CTP5testContext() : base("CTP5test") { }

    public DbSet<Member> Members { get; set; }

    public DbSet<MemberGroup> MemberGroups { get; set; }
}

public class CTP5testContextInitializer : DropCreateDatabaseIfModelChanges<CTP5testContext>
{
    protected override void Seed(CTP5testContext context)
    {
        new List<Member>
        {
            new Member
            {
                Id = 1,
                SecureId = Guid.NewGuid(),
                JoinedOn = DateTime.Now
            }
            ,
            new Member
            {
                Id = 2,
                SecureId = Guid.NewGuid(),
                JoinedOn = DateTime.Now
            }
        }.ForEach(m => context.Members.Add(m));

        var memberGroup = new MemberGroup()
        {
            Id = 1,
            Name = "MemberGroup 1",
            CreatedOn = DateTime.Now
        };

        context.MemberGroups.Add(memberGroup);

        // How can I assign Member 1 to MemberGroup 1 ?????

        context.SaveChanges();
    }
}

Я надеюсь,ясно, что я пытаюсь сделать здесь, и что кто-то может дать мне пример того, как этого добиться.

С уважением, Эрвин

1 Ответ

0 голосов
/ 17 февраля 2011

Вы должны использовать коллекции, определенные в ваших классах POCO. Поэтому, если вы хотите назначить member1 для memberGroup, вы просто позвоните:

memberGroup.Members.Add(member1);
...