У меня есть 3 объекта
Принтер имеет свойства сервера и драйвера
Где-то в моем коде я настроил IEnumerable , где каждый экземпляр принтера содержит свои собственные сущности Server и Driver.
Теперь, когда я пытаюсь отправить его в базу данных, я использую следующий код:
foreach (Printer p in printers)
{
printmanEntities _dc = new printmanEntities();
p.Driver = _dc.DriverSet.FirstOrDefault(d => d.Name == p.Driver.Name) ?? p.Driver;
p.Server = _dc.ServerSet.FirstOrDefault(s => s.Name == p.Server.Name) ?? p.Server;
_dc.AddToPrinterSet(p);
_dc.SaveChanges();
}
Предполагается, что я получу запись для каждого объекта «Принтер» и одну запись для каждого уникального имени драйвера и сервера. Но фактический результат вполне зашит.
Приведенный выше код создает одну запись для каждого уникального объекта драйвера, но без видимой причины создает более одной записи для каждого уникального сервера. И все записи принтера указывают на одну запись сервера.
Кроме того, если я сначала назначу p.Server, то получу только уникальные записи для сущностей сервера, но несколько записей для сущностей драйвера.
Что я делаю не так?
Обновление: заменил EF на LINQ2SQL, и все заработало так, как я ожидал. Отдельная строка для каждого уникального объекта, не более того.