c# - 如何首先在代码中创建函数?

标签 c# asp.net-mvc entity-framework code-first entity-framework-migrations

是否可以使用 Code First 在 sql server 中创建数据库函数?

喜欢

CREATE FUNCTION [dbo].[fnIsPaid] ...

以下是我根据 ChrFin 的建议得出的结果。我把它标记为答案。但让我在这里做一个更详细的记录。

包管理器控制台Add-Migration AddFnIsPaid`。

这将创建一个以时间戳为前缀的 DbMigration 类。

在这个迁移类中,我有一个用于 Up()Down() 方法的创建脚本和删除脚本:

public partial class AddFnIsPaid : DbMigration
{
    public override void Up()
    {
        Sql(_createFunctionScript);
    }

    public override void Down()
    {
        Sql(DropFunctionScript);
    }


    #region SQL Scripts
    private readonly string _createFunctionScript = string.Concat(
            "CREATE FUNCTION [dbo].[fnIsPaid] ",
            "(",
            ...
            ") ",
            "RETURNS bit ",
            "AS ",
            "BEGIN ",
            ...
            "END"
            );

    private const string DropFunctionScript = "DROP FUNCTION [dbo].[fnIsPaid]";  
    #endregion
}

最佳答案

不,您只能告诉它将 CRUD 操作映射到存储过程 (EF 6+),例如:

modelBuilder
   .Entity<Post>()
   .MapToStoredProcedures();

但是您可以在迁移中执行自定义 SQL:

public override void Up()
{
    Sql("CREATE FUNCTION [dbo].[fnIsPaid] ...");
}

关于c# - 如何首先在代码中创建函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24998513/

相关文章:

c# MVVM在选择组合框后更新Datagrid

asp.net-mvc - Azure 可扩展环境中的 WebSocket

.net - Linq 2 实体 : Performing a join on two columns with different types

c# - 母版页和内容页中的 ScriptManager

c# - 在 db40 (.net) 中处理大型集合

c# - Unity 2D Tilemap 自定义六角规则瓦片

c# - 在 C# (ASP.MVC) 中将 Access DB (.mdb) 与 ADODB 一起使用,就像使用经典 ASP

C#- ASP.net MVC 3- 向表中插入多行

entity-framework - 在 EF Core 中自动设置每条记录的创建和修改日期的问题

c# - EntityFramework 上下文返回旧数据