我在 c# 中使用实体框架代码 first 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();
}
谢谢
你能发布你的实际代码吗 - 你发布的代码不会编译,但对你的一些括号和变量命名进行了一些小的更改 - 但我得到的结果与你不同,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();
}
}