如何在Entity Framework中定义存储过程(代码优先)?

时间:2012-01-10 19:39:50

标签: entity-framework entity-framework-4.1

我在Entity Framework中定义了我的模型(代码优先),但是如何在模型中定义存储过程?我想创建我的模型,并在从我的模型生成数据库时让它在我的数据库中生成存储过程。

2 个答案:

答案 0 :(得分:11)

描述

目前,实体框架代码中的存储过程没有内置的直接映射支持。但是您可以执行任何sql查询(创建存储过程),就像在我的示例中一样。

示例

public class MyDatabaseContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        DbCommand cmd = Database.Connection.CreateCommand();
        cmd.CommandText = "create stored procedure ....";
        cmd.ExecuteNonQuery();
    }   
}

更多信息

答案 1 :(得分:2)

我正在使用Entity Framework 6,所以事情可能已经改变了。数据库不是在OnModelCreating中创建的,但它确实在DbInitializer中有效...

public class MyDbInitializer : DropCreateDatabaseIfModelChanges<MyDbContext> {
    protected override void Seed(MyDbContext context) {
        string sql = @"CREATE PROCEDURE...";
        context.Database.ExecuteSqlCommand(sql);

        base.Seed(context);
    }
}