我的数据库上下文无法识别对特定表的上下文所做的更改。在上下文中定义的其他表上的CRUD操作正常工作。
对于无法识别上下文更新的表,我能够查询没有问题的数据,但任何更改上下文的尝试都没有效果。
我已经确认没有更新命令通过SQL事件探查器来到SQL Server数据库,并且我在update方法中添加了代码,以通过ChangeTracker上的HasChanges方法检查上下文对象的状态,该方法始终指示false。
public async Task<IEnumerable<ScheduleEntry>> UpdateProductionScheduleAsync(ScheduleEntry entry)
{
Log.TraceInfo(String.Format("{0} updating CNC Production Schedule Entry", entry.UserName));
ScheduleEntry result = _context.ProductionSchedule.SingleOrDefault(x => x.Id == entry.Id);
if (result != null)
{
try
{
result = entry;
//BUGBUG: Remove this debugging code
bool changesMade = _context.ChangeTracker.HasChanges();
int changeCount = await _context.SaveChangesAsync();
}
catch (Exception ex)
{
Log.TraceError(Log.WarnId.SqlException, String.Format("UpdateProductionScheduleAsync Request Failed: Error:{0}", ex));
}
}
return await GetAllScheduleEntriesAsync();
}
我没有先使用向导或代码,我只是手动滚动了DB Context类...
[DbConfigurationType(typeof(CodeConfig))]
public class CNCDataContext : DbContext, IDatabaseContext
{
public CNCDataContext()
: base("name=CNCProductionData")
{
Database.SetInitializer<CNCDataContext>(null);
}
public DbSet<RawData> RawData { get; set; }
public DbSet<ScheduleEntry> ProductionSchedule { get; set; }
public class CodeConfig : DbConfiguration
{
public CodeConfig()
{
SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory());
SetProviderServices("System.Data.SqlClient",
System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
上下文不会识别的实体定义是......
[Table("ProductionSchedule")]
public class ScheduleEntry
{
public ScheduleEntry()
{
}
[Key]
public int Id { get; set; }
public DateTime DatePartsProduced { get; set; }
public int Hours { get; set; }
public string MachNum { get; set; }
public DateTime StartDate { get; set; }
public string PartNum { get; set; }
public int QtyToRun { get; set; }
public int QtyRan { get; set; }
public int QtyLost { get; set; }
public int RedLot { get; set; }
public int Scrap { get; set; }
public int Rework { get; set; }
public int QtyLeftToRun { get; set; }
public decimal RatePerHour { get; set; }
public int ShiftsReq { get; set; }
public string Priority { get; set; }
public string NextSetup { get; set; }
public int NextQtyToRun { get; set; }
public DateTime RefreshTime { get; set; }
public string UserName { get; set; }
}
如何调试上下文以确定此实体的问题?