试图种子数据库时,EF异常 [英] EF exception when trying to seed database
问题描述
我跟着本教程创建自己的应用程序:<一href=\"http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application\" rel=\"nofollow\">http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
当我开始调试,并尝试打开播放器列表选项卡,其相当于这些教程学生卡,我得到了以下异常:
异常详细信息:类型'AzsPkInz.DAL.AZSContext'的对象不能转换为类型'System.Data.Entity.IDatabaseInitializer`1 [AzsPkInz.DAL.AZSContext]
源错误:
- 第19行:公众的ActionResult指数()
- 第20行:{
- 21号线:返回查看(db.Players.ToList());
- 行22:}
块引用>这是
AZSContext
来源:公共类AZSContext:的DbContext
{
公共AZSContext():基地(AZSContext)
{
} 公共DbSet&LT;玩家GT;播放器{搞定;组; }
公共DbSet&LT;培训&GT;培训{搞定;组; }
公共DbSet&LT;&招生GT;扩招{搞定;组; } 保护覆盖无效OnModelCreating(DbModelBuilder模型构建器)
{
modelBuilder.Conventions.Remove&LT; PluralizingTableNameConvention&GT;();
}
}这是一个
播放器
模型:公共类播放器
{
公众诠释ID {搞定;组; }
公共字符串名字{获得;组; }
公共字符串名字{获得;组; }
公众的DateTime出生日期{搞定;组; }
公众的DateTime JoinDate {搞定;组; } 公共虚拟的ICollection&LT;&招生GT; Enrollemnts {搞定;组; }
}任何想法是我做错了?在此先感谢!
解决方案请确保您的web配置的
databaseInitializer
元素指向一个IDatabaseInitializer
(如SchoolInitializer
)的不的一个AZSContext
。&LT;&上下文GT;
&LT;上下文
类型=ContosoUniversity.DAL.SchoolContext,ContosoUniversity&GT;
&LT; databaseInitializer TYPE =ContosoUniversity.DAL.SchoolInitializer,ContosoUniversity/&GT;
&LT; /背景&GT;
&LT; /背景&GT;I followed this tutorial to create my own application: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
When I start to debug and try to open tab of Players list, its equivalent to Student tab in these tutorial, I got following exception:
Exception Details: Object of type 'AzsPkInz.DAL.AZSContext' cannot be converted to type 'System.Data.Entity.IDatabaseInitializer`1[AzsPkInz.DAL.AZSContext]'.
Source Error:
- Line 19: public ActionResult Index()
- Line 20: {
- Line 21: return View(db.Players.ToList());
- Line 22: }
This is
AZSContext
source:public class AZSContext : DbContext { public AZSContext() : base("AZSContext") { } public DbSet<Player> Players { get; set; } public DbSet<Training> Trainings { get; set; } public DbSet<Enrollment> Enrollments { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); } }
And this is a
Player
model:public class Player { public int ID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public DateTime BirthDate { get; set; } public DateTime JoinDate { get; set; } public virtual ICollection<Enrollment> Enrollemnts { get; set; } }
Any idea's what I have done wrong? thanks in advance!
解决方案Make sure that in your web config the
databaseInitializer
element points to aIDatabaseInitializer
(such asSchoolInitializer
) not aAZSContext
.<contexts> <context type="ContosoUniversity.DAL.SchoolContext, ContosoUniversity"> <databaseInitializer type="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity" /> </context> </contexts>
这篇关于试图种子数据库时,EF异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!