У меня есть отношение многие ко многим в моей модели Entity Framework 4 (которая работает с MS SQL Server Express): Patient-PatientDevice-Device.Я использую Poco, поэтому мой PatientDevice-класс выглядит следующим образом:
public class PatientDevice
{
protected virtual Int32 Id { get; set; }
protected virtual Int32 PatientId { get; set; }
public virtual Int32 PhysicalDeviceId { get; set; }
public virtual Patient Patient { get; set; }
public virtual Device Device { get; set; }
//public override int GetHashCode()
//{
// return Id;
//}
}
Все работает хорошо, когда я делаю это:
var context = new Entities();
var patient = new Patient();
var device = new Device();
context.PatientDevices.AddObject(new PatientDevice { Patient = patient, Device = device });
context.SaveChanges();
Assert.AreEqual(1, patient.PatientDevices.Count);
foreach (var pd in context.PatientDevices.ToList())
{
context.PatientDevices.DeleteObject(pd);
}
context.SaveChanges();
Assert.AreEqual(0, patient.PatientDevices.Count);
Но если я раскомментирую GetHashCode в PatientDevice-классеу пациента все еще есть PatientDevice, добавленный ранее.
Что плохого в переопределении GetHashCode и возврате идентификатора?