0

我必须在 edmx 中更新许多 procs 和函数,我不想在模型浏览器中逐个更新,也不想重新创建 edmx,所以那里有任何可能的解决方案,我可以更新多个 proc 或一口气在 edmx 文件中运行。

4

1 回答 1

0

您可以参考以下内容一次更新多个proc或function。

首先,请右键单击 edmx 文件并选择update model from database.

在此处输入图像描述

其次,如果要添加新的过程,可以点击添加,选择对应的存储过程。

在此处输入图像描述

如果要更新已存在的过程,可以单击刷新并选择存储过程。

在此处输入图像描述

第三,可以在dbcontext.cs文件中看到对应的方法。

公共虚拟 ObjectResult<TestProcedure_Result> TestProcedure(Nullable age) { var ageParameter = age.HasValue ? new ObjectParameter("age", age) : new ObjectParameter("age", typeof(int));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<TestProcedure_Result>("TestProcedure", ageParameter);
    }

    public virtual ObjectResult<Pro1_Result> Pro1(Nullable<int> age)
    {
        var ageParameter = age.HasValue ?
            new ObjectParameter("age", age) :
            new ObjectParameter("age", typeof(int));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<Pro1_Result>("Pro1", ageParameter);
    }

    public virtual ObjectResult<string> Proc2(Nullable<int> score)
    {
        var scoreParameter = score.HasValue ?
            new ObjectParameter("score", score) :
            new ObjectParameter("score", typeof(int));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<string>("Proc2", scoreParameter);
}

最后,您可以使用以下代码通过存储过程获取结果。

 using (var db = new StudentContext())
            {
                var result = db.TestProcedure(20);
                foreach (var stu in result)
                {
                    Console.WriteLine(stu.Name);
                }
            }
于 2020-11-27T06:53:48.617 回答