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-databaseEntity Framework 4.3コードで最初の移行を実行すると、次のようになります。

Value cannot be null.
Parameter name: key

私は何か間違ったことをしていますか?これは物事を行うための受け入れられた方法でさえあります。これは、使用する各物のすべてのフィールドを実装することを意味するため、インターフェイスを使用したくありません。item

編集global.asax.cs私はこれがApplication_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 に答える