1

最初に dotConnect for MySQL でエンティティ フレームワーク コードを使用していますが、何らかの理由でモデル マッピングの 1 つに関するエラーが発生します。

このエラーを検索しましたが、通常、問題のある xml ファイルまたはエンティティ フレームワーク固有のファイルが原因です。私はこれらのいずれも使用しておらず、モデルを含む .cs コード ファイルのみを使用しています。

例外の詳細:

System.Data.MappingException: 概念型 'SiteModels.TournamentTable' のメンバー数が、オブジェクト側の型 'SiteModels.TournamentTable' のメンバー数と一致しません。メンバー数が同じであることを確認してください。

デザイナーがなく、コードを含むファイルが 1 つしかないため、このエラーが発生する理由がわかりません。

問題のあるクラスは次のとおりです。

public class TournamentTable
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

public List<TournamentColumn> Columns { get; set; }

public TournamentTable()
{
    Columns = new List<TournamentColumn>();
}

public void AddColumn(int index, TournamentColumn column)
{
    Columns.Insert(index, column);
}

public void RemoveColumn(int index)
{
    Columns.RemoveAt(index);
}

/// <summary>
/// Add a tournament cell at the top of the column.
/// </summary>
/// <param name="column"></param>
public void AddColumn(TournamentColumn column)
{
    Columns.Add(column);
}

/// <summary>
/// Returns the tournament column at the index specified.
/// </summary>
/// <param name="index"></param>
/// <returns></returns>
public TournamentColumn this[int index]
{
    get { return Columns[index]; }
}

/// <summary>
/// Returns the tournament cell at the index specified.
/// </summary>
/// <param name="columnIndex"></param>
/// <param name="cellIndex"></param>
/// <returns></returns>
public TournamentCell this[int columnIndex, int cellIndex]
{
    get { return Columns[columnIndex][cellIndex]; }
    set
    {

        Columns[columnIndex][cellIndex] = value;
    }
}

}

コンテキスト構成:

public class EntitiesContext : DbContext
{

    public EntitiesContext()
        : base()
    {
        System.Data.Entity.Database.SetInitializer<EntitiesContext>(new DropCreateDatabaseIfModelChanges<EntitiesContext>());
    }

public EntitiesContext(DbConnection connection)
    : base(connection, true)
{
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions
      .Remove<System.Data.Entity.ModelConfiguration.Conventions
        .ColumnTypeCasingConvention>();
}

public DbSet<User> Users { get; set; }
public DbSet<Player> Players { get; set; }
public DbSet<Game> Games { get; set; }
public DbSet<TournamentTable> TournamentTables { get; set; }

}

助けてくれてありがとう、私には手がかりがありません。

4

1 に答える 1

1

インデクサーをコメントアウトしてみて、それが役立つかどうかを確認してください。その場合は、それらに NotMapped 属性を設定するか、メソッドとして再実装する必要があります。

于 2012-09-26T21:59:02.647 に答える