LINQ to SQL:DataContext.SubmitChanges nicht sofort aktualisieren
Habe ich ein komisches problem.
Tun DataContext.SubmitChanges() aktualisiert Count() in einer Art und Weise, aber nicht in der anderen, siehe mein Kommentar im code unten.
(DC ist der DataContext)
Company c = DC.Companies.SingleOrDefault(x => x.Name == companyName);
DataCompliance compliances = c.DataCompliances.Where(x => x.ComplianceCriteria.FKElement == e.Id);
if (compliances.Count() == 0) //Insert if not exists
{
DC.DataCompliances.InsertOnSubmit(new DataCompliance {
FKCompany = c.Id,
FKComplianceCriteria = criteria.Id
});
DC.SubmitChanges();
compliances = c.DataCompliances.Where(x => x.ComplianceCriteria.FKElement == e.Id);
//At this point DC.DataCompliances.Count() has increased,
//but compliances.Count() is still 0
//When I refresh the page however, it will be 1
}
Warum geschieht das?
Ich aktualisieren compliances
unmittelbar nach dem einlegen ein. Hat jemand eine Lösung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es einen Unterschied zwischen dem hinzufügen des Objekts zu den Daten-Kontext (und propagierte es in der Datenbank) und dem hinzufügen der zugehörigen Entität Sammlung des Objektes, das Sie haben, aus der Datenbank abgerufen. Sobald Sie abgerufen haben ein Objekt und die zugehörigen entities, wodurch änderungen an den Daten in der Datenbank nicht widergespiegelt werden, die in die abgerufene Objekt wird, da die Datenbank nicht erforderlich. Der bit-Schlüssel ist die
SingleOrDefault()
auf das Unternehmen -, dass Kräfte, die die Abfrage ausgeführt werden und die abgerufenen Daten zugeordnet. Die Aufzählung der zugeordneten Entitäten wird dazu führen, dass Sie geladen werden, wenn Sie nicht mit Spannung geladen bereits. So, auch nach dem aktualisieren der Datenbank, die zuvor abgerufene Objekt wird nicht reflektieren das update. Sie können jedoch, fügen Sie das eingefügte Objekt an die Unternehmens-Daten, Normen und Vorschriften-Sammlung, dann Mach das update und es wird das sein, was Sie erwarten. Beachten Sie, dass ich denke, Sie müssen noch weisen Sie die Person, die Sie in Ihre schauen. Aktualisieren der Seite löst auch das problem, da die Daten erneut abgefragt, aus der Datenbank, Aktualisierung der zugehörigen Entität Sammlungen sowie die Tabellen auf den Daten-Kontext.Original (Links für Kontext)
Was ist, wenn Sie versuchen, die Zuordnung der zugehörigen Entität anstatt nur seine id? Ich glaube, dass die Zuweisung der id nicht wirklich Auffüllen der zugehörigen Entität, die kontrolliert und SubmitChanges ist nur die Weitergabe der Daten an DB, eigentlich nicht, die Tabelle zu aktualisieren-element mit den Daten der zugehörigen Entität.
c...
undDC...
nach dem update. Das Unternehmen wird nicht aktualisiert, wenn Sie aktualisieren die Daten-Kontext. Sie müssen es hinzufügen, um das Unternehmen, die Daten Einhaltung von Vorschriften sowie verbreiten es in der Datenbank.Ändern Sie die
c.DataCompliances.Where...
zuDC.DataCompliances.Where...
DC
ist der Daten-Kontext, was ist die definition vonc
c
ist ein anderes Objekt, müssen Sie möglicherweise, um es zu aktualisieren. oder fügen Sie esc