如何使用存储过程和事务以及实体框架保存多个记录?

时间:2016-10-20 14:50:25

标签: c# asp.net entity-framework

我有一个Event表和一个Session表。存储过程getEventsgetEventSessions用于检索数据,因此我创建了C#POCO类来转换调用存储过程的结果。

public class Session 
{
    public DateTime SessionDate { get; set; }
    public string SessionName { get; set; }
}

public class Event 
{
    public int EventId { get; set; }
    public string EventName { get; set; }
    public Session[] Sessions { get; set; }
}

现在我需要创建新的事件和会话。我从前端获得了一个包含多个会话的Event对象。我应该如何一次性将它们保存到数据库?

我用Google搜索,似乎有几种选择,但我很困惑。

  1. 创建一个插入事件的存储过程,解析并插入由XML或varchar(max)参数传入的sesssion信息。
  2. 维护context.Events和context.Sessions,并使用context.SaveChanges更新数据库。
  3. 仅为插入一个事件创建存储过程insertEvent,而仅为插入一个会话创建另一个存储过程insertSession。打开一个事务,调用insertEvent,然后遍历会话列表并逐个调用insertSession
  4. 对我而言,#3似乎是最好的方法,但我很困惑实体框架在这种情况下如何处理事务。 #1听起来像一个非常老派,可能贬值的方式。对于#2,我认为维护context.Events和context.Sessions是不必要的,并且与项目的其余部分不一致。

    我的问题是否有最佳或更好的解决方案?

0 个答案:

没有答案