POCO, ссылаясь на многих на многих - PullRequest
0 голосов
/ 20 апреля 2011

Это похоже на тот же вопрос, но мой немного другой.

Entity Framework 4 CTP 5 Само-ссылка многие-ко-многим

пример кода;

public class Category 
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }

    public virtual ICollection<Category> Parents { get; set; }
    public virtual ICollection<Category> Children { get; set; }        
}

Я получил правильный результат, когда я определилПоле Родитель как Категория, а не Родители как Список.

Класс категории хорошо разработан, но POCO?Что я должен делать?Заранее спасибо.

1 Ответ

2 голосов
/ 21 апреля 2011

Ваш класс работает отлично для меня без каких-либо настроек. Даже атрибут [Key] не требуется.

Вот код, который реализует эту модель:

using (var context = new MyContext())
{
    var parent1 = new Category { Name = "Parent 1" };
    var parent2 = new Category { Name = "Parent 2" };
    var child1 = new Category { Name = "Child 1" };
    var child2 = new Category { Name = "Child 2" };
    parent1.Children = new List<Category> { child1, child2 };
    parent2.Children = new List<Category> { child1, child2 };
    context.Categories.Add(parent1);
    context.Categories.Add(parent2);
    context.SaveChanges();
}
using (var context = new MyContext())
{
    var categories = context.Categories.OrderByDescending(x => x.Children.Count)
                                       .ToList();
    foreach (var category in categories)
    {
        Console.Write(category.Name + ": ");
        Console.WriteLine("Parents ({0}) Children ({1})",
            string.Join(",", category.Parents.Select(x => x.Name).ToArray()),
            string.Join(",", category.Children.Select(x => x.Name).ToArray()));
    }
}

Будет напечатано:

Parent 1: Parents () Children (Child 1,Child 2)
Parent 2: Parents () Children (Child 1,Child 2)
Child 1: Parents (Parent 1,Parent 2) Children ()
Child 2: Parents (Parent 1,Parent 2) Children ()
...