【问题标题】:Entity Framework (5.0) Code First - Insert into Collection within Collection实体框架(5.0)代码优先 - 在集合中插入集合
【发布时间】:2012-11-21 10:14:51
【问题描述】:

我有三门课。

活动 > 创意工坊 > 创意工坊时间

我目前正在寻找将记录插入 Workshop Times 的最佳方法,这是首先使用 ICollections 通过代码运行。

正在寻找类似的东西,但我知道它不起作用:

       //Create connection
        var db = new Context();

        var Event = db.Events
            .Include("Workshops")
            .Include("Workshops.Times")
            .Where(ev => ev.GUID == EventGUID).FirstOrDefault();

        Event.Workshops.Add(new Workshop
        {
            Name = tbWorkshopName.Text,
            Description = tbWorkshopDescription.Text,
            Times.Add(new WorkshopTime{
                //Information for times
            })
        });

        db.SaveChanges();

减少的课程:

public class Workshops{
    public int id { get; set; }
    public string name { get; set; }
    public ICollection<WorkshopTimes> Times{get;set;}
}
public class Events {
    public int id { get; set; }
    public string name { get; set; }
    public ICollection<Workshops> WorkShops { get; set; }
}

public class WorkshopTimes {
    public int id { get; set; }
    public DateTime time { get; set; }
}

【问题讨论】:

    标签: c# asp.net entity-framework code-first


    【解决方案1】:

    您的查询肯定走在正确的轨道上,但是您的包含语句似乎不正确。从您的模型中,我期望:

        var Event = db.Events
            .Include("WorkShops")
            .Include("WorkShops.events")
            .Where(ev => ev.GUID == EventGUID).FirstOrDefault();
    

    注意这里使用的是属性名而不是类型。这将确保列出的导航属性中的实体将包含在结果中。

    此外,您可以使用 lambda 来做同样的事情(但它的类型安全)

    在此处查看如何执行与您的非常相似的场景:

    EF Code First - Include(x => x.Properties.Entity) a 1 : Many association

    或来自罗文米勒(来自 EF 团队)

    http://romiller.com/2010/07/14/ef-ctp4-tips-tricks-include-with-lambda/

    并确保您是 using System.Data.Entities 用于基于 lambda 的包含 (Where did the overload of DbQuery.Include() go that takes a lambda?)

    【讨论】:

    • 老实说,我手动输入了类,原始查询对于项目中的实际类是正确的。不在我的计算机上从项目中获取实际课程。 -- 我能够查询结果并得到我需要的东西,这是我遇到问题的插入。干杯。
    • @ItWontWork 你能否补充一些关于什么不起作用,你看到什么行为的更多细节
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-23
    • 1970-01-01
    • 2023-03-13
    • 2015-11-04
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多