0

使用 asp.NET MVC3,我正在尝试创建具有以下内容的抽象类/模型:

namespace core.Models.Concrete
{
  public class item
  {
    [Key]
    public Guid id { get; set; }
    public Type ConcreteType { get; set; }
    public itemtype Type { get; set; }
    public string barcode { get; set; }
    public int rating { get; set; }
    public string Title { get; set; }
  }
}


public enum itemtype 
{
  Game,
  Book,
  Film
}

由以下人员使用:

namespace core.Models.Abstract
{
  public class game : item
  {
    public gamePlatform platform { get; set; }
  }



  public enum gamePlatform
  {
    PC,
    X360,
    PS3,
    Wii
  }
}

当我update-database在 Entity Framework 4.3 代码中运行第一次迁移时,我得到:

Value cannot be null.
Parameter name: key

难道我做错了什么?这甚至是一种公认​​的做事方式吗?我真的不想使用接口,因为这意味着在使用的每个事物中实现所有字段item

编辑 我刚刚发现这来自global.asax.csApplication_Start中的以下代码:

protected void Application_Start()
    {
      AreaRegistration.RegisterAllAreas();

      RegisterGlobalFilters(GlobalFilters.Filters);
      RegisterRoutes(RouteTable.Routes);

      //System.Data.Entity.Database.SetInitializer<DataContext>(new DataContextInitializer());

      using (coreContext TestContext = new coreContext())
      {
        var x =TestContext.Users.Count();  <!-- THIS LINE HERE
        try
        {
          Roles.CreateRole("User");
        }catch
        {
          //Already created
        }
      }

    }

核心背景:

public class coreContext : DbContext
    {
 public DbSet<core.Models.Abstract.game> games { get; set; }
}
4

1 回答 1

2

您的错误来自public Type ConcreteType,您是否缺少类定义?Type 通常是指System.Type是你真正想要放在你的类中的吗?EF 无法将其转换为 SQL 类型。

于 2012-08-10T12:56:33.513 回答