代码优先和存储过程

时间:2013-08-16 11:23:45

标签: asp.net-mvc-4 stored-procedures entity-framework-5

我有以下问题。

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

首先,我有一个名为Entity的{​​{1}}:

Genres

然后,我有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

一切都运作良好,但我有一个问题。

当我执行我的存储过程时,Entity Framework 5在我的数据库中创建了两个表。第一个是 var DbContext = new DbContext(); ViewBag.Genres = DbContext.Genres.SqlQuery("psy_trance_fm_select_genres"); ,第二个是__MigrationHistory

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

请帮帮我。感谢。

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

1 个答案:

答案 0 :(得分:1)

如果您使用的是存储过程,则不应使用代码优先策略。

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

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

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

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