2012-04-28 65 views
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?

对不起,我觉得这是一个非常基本的问题,但我不能弄清楚如何做到这一点

感谢

+0

* I *假设你想“狗”的父母是‘动物’。是什么让*你*认为“动物”将成为具有'CategoryId'1的'Category'? – 2012-04-28 13:52:04

+0

是的你是对的,狗的父母将是动物。 caategoryId是自动编号。对不起如果我的示例没有意义。这只是一个测试数据,而不是我使用的实际代码。让我知道你是否需要更多细节。感谢 – samantha07 2012-04-28 13:54:06

回答

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); 

注意,这仅仅是一些代码,我做了,我没有测试它,但你的想法!

+0

看起来约权(我不知道EF,但是这似乎是一个更根本的问题养育一个对象) – 2012-04-28 13:56:35

+0

谢谢M.Schenkel。我仍然不知道如何将其添加到我的添加方法中。我只有几周使用EF和c#的经验。我希望如果你不介意请给我一个关于如何去做的例子,我将非常感激。谢谢 – samantha07 2012-04-28 14:00:17

+0

当然,你能提供完整的加法吗?基于这一点,我会提供一个建议:) – 2012-04-29 06:48:59

0

另一种方式:

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

a.Children.Add(b); 

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

它确实标识你的布线了。 (这也是未经测试)。

相关问题