Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 无法隐式转换类型';int';归类_Entity Framework_Ef Code First - Fatal编程技术网

Entity framework 无法隐式转换类型';int';归类

Entity framework 无法隐式转换类型';int';归类,entity-framework,ef-code-first,Entity Framework,Ef Code First,这是我的模型 public class Category { public int CategoryId { get; set; } public string Description { get; set; } public Category Parent { get; set; } public ICollection<Category> Children { get; set; } } 公共类类别 { public int CategoryId{get;set

这是我的模型

public class Category
{
  public int CategoryId { get; set; }
  public string Description { get; set; }
  public Category Parent { get; set; }
  public ICollection<Category> Children { get; set; }
}
公共类类别
{
public int CategoryId{get;set;}
公共字符串说明{get;set;}
公共类别父项{get;set;}
公共ICollection子项{get;set;}
}
映射:

modelBuilder.Entity<Category>()
        .HasMany(x => x.Children)
        .WithOptional(y => y.Parent)
        .Map(m => m.MapKey("ParentId"));
modelBuilder.Entity()
.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();
var a=新列表
{
新类别{Description=“Animals”}

新类别{Description=“Dog”,Parent=1}您不能使用1,因为1是整数,不属于类别类型。您需要在列表声明之外声明该类别,然后将其添加到列表中:

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

list.Add(a);
list.Add(b);
List List=新列表();
类别a=新类别();
类别b=新类别(){Parent=a};
列表.添加(a);
列表.添加(b);

请注意,这只是我编写的一些代码,我没有对其进行测试,但您明白了!

您不能使用1,因为1是一个整数,不属于类别。您需要在列表声明之外声明类别,然后将其添加到列表中:

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

list.Add(a);
list.Add(b);
List List=新列表();
类别a=新类别();
类别b=新类别(){Parent=a};
列表.添加(a);
列表.添加(b);
请注意,这只是我编写的一些代码,我没有对其进行测试,但您明白了!

另一种方法:

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

a.Children.Add(b);

context.Categories.Add(a);
context.SaveChanges();
它为您连接ID。 (这也是未经测试的。)

另一种方法:

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

a.Children.Add(b);

context.Categories.Add(a);
context.SaveChanges();
它为您连接ID。
(这也是未经测试的。)

我想你是想让“狗”的父母成为“动物”。你为什么会认为“动物”将是
类别
类别ID
1?是的,你是对的,狗的父母将是动物。caategoryId是自动编号。如果我的示例没有意义,很抱歉。这只是一个测试数据,不是我使用的实际代码。如果你需要更多详细信息,请告诉我。谢谢我假设你想要“狗”的父母是“动物”.是什么让你认为“动物”将是
类别
类别ID
1?是的,你是对的,狗的父母将是动物。caategoryId是自动编号。如果我的示例没有意义,很抱歉。这只是一个测试数据,不是我使用的实际代码。如果你需要更多详细信息,请告诉我。谢谢(我不知道EF,但这似乎是关于养育一个对象的一个更基本的问题)谢谢M.Schenkel。我仍然不知道如何将这一点纳入我的添加方法。我只有几周使用EF和c#的经验。我希望如果您不介意,请提供一个如何操作的示例,我将不胜感激。谢谢,您能提供您的完整添加方法吗?基于此,我将提供一个建议:)@M.Schenkel,完整的方法与我上面发布的完全相同。如果可能的话,我只想同时添加一个父类别和子类别。因此根据上面的示例,我假设“Animal”的categoryId为1。在这种情况下,只需使用我提供的代码并添加'a.ForEach(s=>context.Categories.add(s));context.SaveChanges();'将其保存到contextLooks大约正确(我不知道EF,但这似乎是有关为对象设置父对象的更基本的问题)谢谢M.Schenkel。我仍然不知道如何将这一点融入到我的添加方法中。我只有几周使用EF和c#的经验。我希望如果您不介意,请提供一个如何操作的示例,我将不胜感激。谢谢,您能提供完整的添加方法吗?基于此,我将提供一个建议:)@M.Schenkel,full方法与我上面发布的方法完全相同。如果可能的话,我只想同时添加父类别和子类别。因此根据上面的示例,我假设“Animal”的categoryId为1。在这种情况下,只需使用我提供的代码并添加'a.ForEach(s=>context.Categories.add(s));context.SaveChanges()保存到上下文中