1

这是我的模型

public class Category
{
  public int CategoryId { get; set; }
  public string Description { get; set; }
  public Category Parent { get; set; }
  public ICollection<Category> Children { get; set; }
}

映射:

modelBuilder.Entity<Category>()
        .HasMany(x => x.Children)
        .WithOptional(y => y.Parent)
        .Map(m => m.MapKey("ParentId"));

这是我向其中添加数据的方法:

 var a = new List<Category>
 {
   new Category { Description = "Animals" }
   new Category { Description = "Dog", Parent = 1 } <<<-ERROR
 }
 a.ForEach(s => context.Categories.Add(s));
 context.SaveChanges();

如何将第一行的 CategoryId 添加到第二行???

抱歉,我认为这是一个非常基本的问题,但我不知道该怎么做

谢谢

4

2 回答 2

1

您不能使用 1,因为 1 是整数,而不是 Category 类型。您需要在列表声明之外声明类别并稍后将其添加到列表中:

List<Category> list = new List<Category>();
Category a = new Category();
Category b = new Category(){ Parent = a};

list.Add(a);
list.Add(b);

请注意,这只是我编写的一些代码,我没有测试它,但你明白了!

于 2012-04-28T13:53:33.243 回答
0

另一种方式:

Category a = new Category();
Category b = new Category();

a.Children.Add(b);

context.Categories.Add(a);
context.SaveChanges();

它为您完成 ID 的连接。(这也是未经测试的。)

于 2012-04-28T15:35:28.377 回答