1

我在 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();
}

谢谢

4

1 回答 1

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

}
于 2012-10-15T13:14:31.343 回答