0

我有以下问题。

我尝试执行存储过程,该过程使用 Code First 模型在 MVC 4 应用程序中返回带有实体框架 5 的表。

首先,我有一个EntityGenres

public class Genres
{
    [Key]
    public string Genre { get; set; }
    public int Artists { get; set; }
    public int Albums { get; set; }
}

然后,我有一个DbContext

public class DbContext : DbContext
{
    public DbSet<Genres> Genres { get; set; }
}

然后,我执行我的存储过程SqlQuery

        var DbContext = new DbContext();

        ViewBag.Genres = DbContext.Genres.SqlQuery("psy_trance_fm_select_genres");

一切正常,但我有一个问题。

当我执行存储过程时,Entity Framework 5 在我的数据库中创建了两个表。第一个是__MigrationHistory,第二个是Genres

我不需要Genres创建表,因为我根本不使用它。

请帮帮我。谢谢。

PS - 我在这篇文章的帮助下编写了我的代码:http: //msdn.microsoft.com/en-us/data/jj592907.aspx

4

1 回答 1

1

如果您使用的是存储过程,那么您不应该使用 Code-First 策略。

您应该使用 Database-First 策略,因为拥有存储过程意味着存在数据库。

并且您的Genre表被创建,因为这就是 Code-First 所做的 - 它从在代码中创建的实体在数据库中创建表。

另一方面,数据库优先策略将导入您现有的数据库模式并从中创建实体。包括强类型存储过程。

是 MSDN 上的视频 + 教程,解释了使用实体框架的数据库优先策略的概念。

于 2013-08-16T11:34:02.510 回答