使用EF和storedprocedure插入数据集

时间:2015-04-21 07:36:42

标签: c# sql-server entity-framework

我正在使用EF 5。

我有一个工作存储过程,它接受一个数据集并将所有数据插入一个表(它是一个简单的合并类型的东西)。

我已经通过模板浏览器“存储过程映射”将storedprocedure映射到我的插入内容,希望它“神奇地”工作。

我认为这实际上会在执行

时插入数据集
db.mytable.AddRange(List<Entity>)

问题是,存储过程被调用,但是有单独的行而不是数据集。

如何使用EF插入数据集通过storedprocedure?

我已经尝试使用谷歌搜索,但我能想到的是如何从EF sp返回数据集 - 但这不是我正在寻找的。

提前谢谢。

更新

我按照理查德提供的链接,找到了“解决方案”

创建扩展方法

 public static void ExecuteStoreProcedure(this ObjectContext context, string storeProcName, params object[] parameters)
        {
            string command = "EXEC " + storeProcName + " @Table";

            context.ExecuteStoreCommand(command, parameters);
        }

其中@Table是SP为我的数据集/数据表

所采用的参数名称

然后这样做:

 using (var db = new MyEntities())
            {
                var Table = new SqlParameter("Table", SqlDbType.Structured);
                Table.Value = agentList.ToDataTable();
                Table.TypeName = "dbo.MyDataSetType";

                var objectContext = ((IObjectContextAdapter)db).ObjectContext;
                objectContext.ExecuteStoreProcedure("dbo.p_storedproc",Table);                         
            }

其中Table再次是参数名称,TypeName是用于存储过程中参数的数据集/数据表类型名称。

我对这个解决方案不太满意 - 它有效,但我想要一个更实用的方法(更像“EF like”)。

0 个答案:

没有答案