Angenommen, ich lese Daten aus einer Excel-Datei und muss diese mit EF speichern. Nach dem Lesen von Excel, konstruiere ich eine Entität des Typs in meinem EF-Modell - sagen Holiday.Speichern einer expliziten Entität über Entity Framework
Die Chance ist, dass dieser bestimmte Urlaub bereits in meiner DB existiert oder nicht. Ich kann es nicht nur durch das Lesen der Excel-Datei wissen. Ich überprüfe also, ob diese Entität existiert, wenn ich die vorhandene Entität ändern oder eine neue Entität hinzufügen muss.
Folgendes ist, wie ich die Logik handhabe.
foreach (var holiday in clientDataObj.Holidays)
{
// to check for existing holidays, no need to consider the location, as all holidays will anyway exist at root level.
Holiday existingHoliday =
ClientContext.Holidays.SingleOrDefault(h => string.Equals(h.Date, holiday.Date));
if (existingHoliday == null)
{
rootLocation.Holidays.Add(holiday);
}
else
{
holiday.HolidayId = existingHoliday.HolidayId;
ClientContext.Entry(existingHoliday).State = System.Data.Entity.EntityState.Detached;
ClientContext.Entry(holiday).State = System.Data.Entity.EntityState.Modified;
}
}
ClientContext.SaveChanges();
Ich habe den Code noch nicht ausgeführt, um zu sehen, ob es funktioniert. Kann jemand eine Vorstellung davon geben, ob dies der richtige Weg ist, oder gibt es andere bewährte Methoden, um dieses Problem anzugehen?
Danke, ich werde das versuchen. – devC
Danke, Sie haben dort einige wertvolle Vorschläge. – devC
Hallo, ich habe das Problem mit Ihrem Vorschlag gelöst, aber jetzt gibt es ein neues Problem. Schätzen Sie, wenn Sie helfen können. http://stackoverflow.com/questions/37202341/ef-associated-entity-istrying-to-add-to-the-database-when-adding-an- entity – devC