我在c#
中首先使用实体框架代码4.3我得到了以下课程:
Class A
{
public string Name { get; set; }
public List<B> Bs { get; set; }
}
Class B
{
public string Name { get; set; }
}
从A到B有一对多的关系。 当我尝试从A加载B列表时,我只从列表中获取第一个元素。
当我执行以下代码时,我希望a2包含两个b,但实际上它只包含一个。有没有人可以帮助发现问题?
B b = new B() {Name = "b"};
A a = new A() {Name = "a",
Bs = new List<B>() { new B() {Name = "b1"}, new B() {Name = "b2"} };
using (var context = new MyContext())
{
context.As.Add(a);
context.SaveChanges();
}
using (var context = new MyContext())
{
var a2 = (from a in context.As.Include(a => a.Bs)
where a.Name == "a"
select a).Single();
}
由于
答案 0 :(得分:1)
你可以发布你的实际代码 - 你发布的代码不能编译,但是对你的一些括号和变量命名有一些小改动 - 但是我得到的结果与你不同,a2包含两个B,如预计,所以问题可能在其他地方。这是整个控制台应用程序:
public class A
{
public int Id { get; set; }
public string Name { get; set; }
public List<B> Bs { get; set; }
}
public class B
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Model : DbContext
{
public DbSet<A> As { get; set; }
public DbSet<B> Bs { get; set; }
}
class Program
{
static void Main(string[] args)
{
var b = new B() { Name = "b" };
var a1 = new A()
{
Name = "a",
Bs = new List<B>() { new B() { Name = "b1" }, new B() { Name = "b2" } }
};
using (var context = new Model())
{
context.As.Add(a1);
context.SaveChanges();
}
using (var context = new Model())
{
var a2 = (from a in context.As.Include(a => a.Bs)
where a.Name == "a"
select a).Single();
Console.WriteLine(a2.Bs.Count);
}
Console.ReadLine();
}
}