我首先使用实体框架代码和dotConnect for MySQL。实体框架“空插入语句”
我收到以下错误,当我打电话context.SaveChanges()
添加对象上下文后:
保存DbUpdateException:
在更新条目中出现了错误。详情请参阅内部例外。内部异常:
UpdateException:更新条目时发生错误。详情请参阅内部例外。内部异常: EntityCommandCompilationException:准备命令定义时发生错误。详情请参阅内部异常 “}
内部异常:
NotSupportedException异常:{”。空INSERT语句“}
DbContext
时后,我增加了一个项目到
DbContext
奇怪的是,当我添加其所有内容时,它的添加成功,但是当我添加对象本身时,我收到此错误。
这行代码失败:
context.TournamentTables.Add(tournamentTable);
虽然这一个完美的作品:
tournamentTable.Columns.ForEach(column =>
{
column.Cells.ForEach((cell) => context.TournamentCells.Add(cell));
context.TournamentColumns.Add(column);
});
这里是我尝试添加对象:
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;
}
}
}
注意,比赛表格ID 0默认情况下,如果Id被声明为“int?”而不是null。我已经尝试了两种情况,并且还自己设置了ID,但仍然失败。