从Entity Framework Core调用现有存储过程

时间:2017-04-20 05:55:39

标签: entity-framework .net-core entity-framework-core

我正在使用最新EF Core 1.1.1.NET Core。现在我想在我的OnModelCreating类中的ApplicationDbContext方法中实现一些通用代码来从db调用任何现有的SP。请注意,我有我的模型类和数据库表。因此,我既不想要任何迁移,也不想为OnModelCreating内的特定SP指定SP参数。它应该是可用于任何SP的通用实现。我唯一的目的是从数据库中调用任何现有的SP。

实体:

public class Product
{
 public int Id { get; set; }
 public string Name { get; set; }
 public decimal Price { get; set; }

}

ApplicationDbContext类:

public class ApplicationDbContext : DbContext
{
  public ApplicationDbContext ()
  {
   Database.Connection.ConnectionString = "Data Source=.\\SQLExpress;Initial 
   Catalog=CallingExistingSPFromEFCore;Integrated Security=True";
  }

  public DbSet<Product> Products { get; set; }

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
   modelBuilder.Entity<Product>().MapToStoredProcedures
  (
       //What should be the implementation here ?
  )

      base.OnModelCreating(modelBuilder);
  }
}

2 个答案:

答案 0 :(得分:0)

我认为EF Core 1.1尚不支持存储过程。在这里查看EF 6.X与EF Core 1.1的比较:

Entity Framework Feature Comparision

答案 1 :(得分:0)

好的家伙所以我发现如果不需要迁移,我们可以跳过OnModelCreating方法并继续使用OnConfiguring方法。

public class ApplicationDbContext : DbContext
{
    public DbSet<Student> Students { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
      {
        optionsBuilder.UseSqlServer(@"Server=servername;Database=dbname;Trusted_Connection=True;");

        }
    }