Я вижу что-то в Entity Framework, у меня есть мнение, что я либо полностью неправильно понимаю, как работает контекст базы данных, либо EF фактически нарушен (и я знаю, что, скорее всего, t получить его).Контекст структуры Entity, который не действует, как я ожидал
Рассмотрим следующий сценарий:
В базе данных у меня есть куча записей посещаемости студента, и все они имеют код, обозначенный как P для настоящего времени.
Тогда мы имеем что-то похожее на следующее:
public void SetAttendance(int dayId,int attendanceId, int attendanceId, String mark)
{
updateAttendance = new StudentAttendance()
{
Code=String.Empty,
AttendanceId=attendanceId,
DayId = dayId
};
context.Attach(updateAttendance);
//I don't save changes yet because I now need to do some logic
var markedAttendanceCount = context.StudentAttendance.Where(att=> !String.IsNullOrEmpty(att.Code) && att.DayId == dayId).Count();
var allAttendanceCount = context.StudentAttendance.Where(att=> att.DayId == dayId).Count();
var updateDay = new ClassDay()
{
DayId = dayId,
AllMarked = markedAttendanceCount = allAttendanceCount
};
context.Attach(updateDay);
context.SaveChanges();
}
Я бы ожидать, что если бы я называть этот метод SetAttendance следующим образом:
myworker.SetAttendance(10,20,String.Empty);
, что он должен правильно понимать, что посещаемость ибо день не полностью отмечен. То, что я вместо этого вижу, - это то, что мой взгляд на запрос int на context.StudentAttendance запрашивает базу данных. Таким образом, мое обнаружение изменения статуса дня всегда одно.
Я думал, что контекст в основном должен быть достаточно умным, чтобы вы могли написать что-то вроде этого. По сути, у меня всегда складывалось впечатление, что контекст db позволяет существенно работать с сериализуемым видом транзакций. Когда вы вносите изменения в данные через свой контекст, эти изменения будут отражаться в запросах против контекста. Я что-то упускаю?
Спасибо. В реальном коде я различаю и делаю контекст. Добавьте, если это новая метка, и добавьте, если я обновляю. Я попытался опустить пример, чтобы сделать то, что я просил более ясно. Я вижу, о чем вы говорите, и цените ответ. Мне нужно будет оценить, как я могу решить свою конкретную потребность в свете моего лучшего понимания сейчас :) – Danny