我正在使用Jobbr.net之类的聊天服务器。当我关闭群组聊天标签时,我得到DbUpdateException
未被用户代码
代码:
public void CommitChanges()
{
_db.SaveChanges();
}
答案 0 :(得分:1)
您的数据模型或要保留的数据看起来有问题。我猜你试图保存实体时没有设置一些必填字段或外键。
尝试捕获并记录System.Data.Entity.Infrastructure.DbUpdateException
。它应该告诉你哪个实体导致了问题。以下是我们使用的一些日志记录代码:
using NLog;
private static Logger Logger = LogManager.GetCurrentClassLogger();
try {
_db.SaveChanges();
}
catch (System.Data.Entity.Infrastructure.DbUpdateException upEx) {
if (upEx.Entries != null && upEx.Entries.Any()) {
Logger.Debug("DbUpdateException contained '{0}' entries:", upEx.Entries.Count());
// get info about the Entity that produced the error
foreach (var dbEntityEntry in upEx.Entries) {
if (dbEntityEntry.Entity != null) {
var entityType = dbEntityEntry.Entity.GetType();
try {
var id = entityType.GetProperty("Id").GetValue(dbEntityEntry.Entity, null);
Logger.Debug("DbUpdateException contains DbEntityEntry - Type: '{0}', Id: '{1}', State: '{2}'", entityType.Name, id, dbEntityEntry.State.ToString("G"));
} catch (Exception) {
Logger.Debug("DbUpdateException contains DbEntityEntry - Type '{0}', Id: unknown, State: '{2}'", entityType.Name, dbEntityEntry.State.ToString("G"));
}
}
}
}
}