J'utilise d'abord le code de structure d'entité avec dotConnect for MySQL.Entity Framework "Instruction d'insertion vide"
je reçois l'erreur suivante quand je l'appelle context.SaveChanges()
après avoir ajouté un objet au contexte:
DbUpdateException:
Une erreur est survenue lors de l'actualisation des entrées. Voir l'exception interne pour plus de détails.Exception interne:
UpdateException: une erreur s'est produite lors de la mise à jour des entrées. Voir l'exception interne pour plus de détails.Exception interne: EntityCommandCompilationException: une erreur s'est produite lors de la préparation de la définition de la commande. Voir l'exception interne pour plus de détails "}
Exception interne:
NotSupportedException: {".. Instruction d'insertion vide "}
lors de l'enregistrement du DbContext
après avoir ajouté un élément à la DbContext
La partie bizarre est que quand j'ajoute tout son contenu est ajouté avec succès, mais quand j'ajoute l'objet lui-même j'obtiens cette erreur
Cette ligne de code échoue:
context.TournamentTables.Add(tournamentTable);
Alors que celui-ci fonctionne parfaitement:
tournamentTable.Columns.ForEach(column =>
{
column.Cells.ForEach((cell) => context.TournamentCells.Add(cell));
context.TournamentColumns.Add(column);
});
Voici l'objet que j'essaie d'ajouter:
public class TournamentTable //: IEnumerable<TournamentColumn>
{
[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>
[NotMapped]
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>
[NotMapped]
public TournamentCell this[int columnIndex, int cellIndex]
{
get { return Columns[columnIndex][cellIndex]; }
set
{
Columns[columnIndex][cellIndex] = value;
}
}
}
Notez que le tableau du tournoi Id est 0 par défaut, et si l'Id est déclaré comme "int?" Que ce sera null. J'ai essayé les deux cas et également mis l'identification par moi-même et il échoue toujours.