试图种子数据库时,EF异常 [英] EF exception when trying to seed database

查看:266
本文介绍了试图种子数据库时,EF异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我跟着本教程创建自己的应用程序:<一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]


  
  

源错误:


  
  

      
  1. 第19行:公众的ActionResult指数()

  2.   
  3. 第20行:{

  4.   
  5. 21号线:返回查看(db.Players.ToList());

  6.   
  7. 行22:}

  8.   

这是 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:

  1. Line 19: public ActionResult Index()
  2. Line 20: {
  3. Line 21: return View(db.Players.ToList());
  4. 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 a IDatabaseInitializer (such as SchoolInitializer) not a AZSContext.

<contexts>
  <context 
      type="ContosoUniversity.DAL.SchoolContext, ContosoUniversity">
    <databaseInitializer type="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity" />
  </context>
</contexts>

这篇关于试图种子数据库时,EF异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆