我在Entity Framework中定义了我的模型(代码优先),但是如何在模型中定义存储过程?我想创建我的模型,并在从我的模型生成数据库时让它在我的数据库中生成存储过程。
答案 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);
}
}