是否可以在 EDMX 文件 C# DB 优先方法中更新多个过程和函数定义

Posted

技术标签:

【中文标题】是否可以在 EDMX 文件 C# DB 优先方法中更新多个过程和函数定义【英文标题】:Is that possible to update multiple procedure and function definition in EDMX file C# DB first approach 【发布时间】:2021-03-09 00:33:06 【问题描述】:

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

【问题讨论】:

有更新吗?请检查我是否为您解答。 【参考方案1】:

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

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

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

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

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

public virtual ObjectResult TestProcedure(Nullable age) var ageParameter = age.HasValue ? 新对象参数(“年龄”,年龄): new ObjectParameter("年龄", 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);
                
            

【讨论】:

以上是关于是否可以在 EDMX 文件 C# DB 优先方法中更新多个过程和函数定义的主要内容,如果未能解决你的问题,请参考以下文章

实体数据模型(.edmx 文件)是不是与 ORM 无关?

是否可以从实体数据模型(edmx)文件生成数据库?

使用映射从 edmx 生成 dbcontext 对象

使用实体框架映射数据库的方法?

是否有实体框架 7 数据库优先 POCO 生成器?

如何自定义与 EDMX(模型优先)实体框架 4.1 一起使用的表名?