实体框架发布记录

时间:2016-11-03 18:14:22

标签: c# entity-framework-6

我有这个型号:

X = [1 4 6 90 10 32 433 69]
M = 4

newX = [0 0 0 90 0 32 433 69]

这个DbContext:

public class FinalizedWebinarAttendeesList
{
    public List<FinalizedWebinar> Webinars { get; set; }
}

public class FinalizedWebinar
{
    public int ParticipantID { get; set; }
    public bool AffidavitRecvd { get; set; }
    public string EventCode { get; set; }
}

我希望将整个FinalizedWebinarAttendeesList发送给一个函数而不必发送每个函数(如下所示)。 这可能吗?

public class webinarFinalizedAttendeesListDbContext : DbContext
{
    public webinarFinalizedAttendeesListDbContext(string nameOrConnectionString) : base(nameOrConnectionString) { }
    public DbSet<FinalizedWebinar> WebinarFinalAttendee { get; set; }
}

3 个答案:

答案 0 :(得分:0)

当然,为什么不呢?调整此示例以更好地满足您的需求:

public void InsertAttendee(List<FinalizedWebinar> webinars)
{
    using (webinarFinalizedAttendeesListDbContext context = new webinarFinalizedAttendeesListDbContext(connectionString))
    {
        foreach(var webinar in webinars) {
            context.WebinarFinalAttendee.Add(webinar);
        }

        context.SaveChanges();
    }
}

实体框架中的上下文将记住所跟踪对象的所有更改,并在保存时立即应用它们。您可以在上下文中执行任意数量的操作。

注意:将此推向极端可能会对性能产生不良影响,但只要您做了大量合理的工作,一切都应该没问题。与往常一样,如果您担心出现问题,请测量性能影响。

答案 1 :(得分:0)

你想要像DbSet.AddRange()这样的东西吗?您可以将项添加到IEnumerable,并将IEnumerable添加到您的DbSet。

答案 2 :(得分:0)

DbSet<T>有一个.AddRange(IEnumerable<T>)方法可以使用:

context.WebinarFinalAttendee.AddRange(attendees);

https://msdn.microsoft.com/en-us/library/system.data.entity.dbset.addrange(v=vs.113).aspx

的更多信息