0
我在我的ASP.NET项目中使用的unit of work
与repository pattern
实体框架6.延迟加载不新增对象
我现在面临的问题是一起活动的,是当我添加一个新的对象数据库,当我再次调用同一对象时,它不会直接激活为Lazy loading
。
例如:
我有一个Attendance object
含有2个虚拟链接DayCode
和Employee
。
public partial class Attendance
{
public Attendance()
{
this.Id = -1;
this.EmployeeId = -1;
this.Present = false;
this.Time = 0;
this.Closed = false;
this.Correction = false;
}
public int Id { get; set; }
public int EmployeeId { get; set; }
public bool Present { get; set; }
public System.DateTime Date { get; set; }
public string Remark { get; set; }
public int Time { get; set; }
public Nullable<short> DayCodeId { get; set; }
public bool Closed { get; set; }
public bool Correction { get; set; }
public virtual Employee Employee { get; set; }
public virtual DayCode DayCode { get; set; }
}
我DayCode
类:
public partial class DayCode
{
public DayCode()
{
this.Id = -1;
this.Code = "";
this.Attendances = new HashSet<Attendance>();
}
public short Id { get; set; }
public string Code { get; set; }
public string Title { get; set; }
public string Color { get; set; }
public virtual ICollection<Attendance> Attendances { get; set; }
}
我点击我的网页按钮的事件:
protected void btnSaveCorrection_Click(object sender, EventArgs e)
{
Attendance attendance = GetItem();
try
{
unitOfWork.AttendanceRepository.Add(attendance);
unitOfWork.Save();
}
catch
{
ShowMessage("Problemen ondervonden, probeer opnieuw!", "alert alert-danger");
}
// Load attendances
LoadAttendances(3); // Test Michael
LoadCorrections(3); // Test Michael
}
我LoadCorrections
方法:
private void LoadCorrections(int employeeId) // Test _EmployeeId
{
//...
Employee _employee = unitOfWork.EmployeeRepository.LoadItem(employeeId);
int counter = 0;
foreach (Attendance attendance in _employee.Attendances.Where(
e => e.Correction && e.Date.Month == _Date.Month
).OrderBy(e => e.Date).ThenBy(e => e.Id))
{
_bodyRow = new BTableBodyRow();
_bodyRow._CssClass = "";
//...
_cellBody = new BTableBodyCell();
_cellBody._Content = attendance.DayCode.Code + " (" + attendance.DayCode.Title + ")";
//Here I get a nullreference exception!!!!!!!!!!!!!!!!!!
_cellBody._CssClass = "left";
_bodyRow._BodyCells.Add(_cellBody);
//...
_bodyRows.Add(_bodyRow);
counter++;
}
//...
}
我必须更新s ome的方式Lazy loading
或...?