我有以下问题。
我尝试执行存储过程,该存储过程使用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
答案 0 :(得分:1)
如果您使用的是存储过程,则不应使用代码优先策略。
您应该使用Database-First策略,因为拥有存储过程意味着存在数据库。
并且您的Genre
表被创建,因为这是Code-First的作用 - 它在数据库中从代码中创建的实体创建了表。
Here是关于MSDN的视频+教程,解释了使用实体框架的数据库优先策略的概念。