Wenn ich mein Mitglied aktualisiere, möchte ich auch seinen BankCheck aktualisieren.Entity Framework 5: Eins zu Viele mit Fremdschlüssel Aktualisiert/Hinzugefügt/Gelöscht
Dies ist meine Datenbank:
- Meine Zahlungsanweisung hinzugefügt werden kann, aktualisiert oder gelöscht werden.
- Mein Mitglied nur dann aktualisiert werden (Name, Vorname ...)
ich mein Glied in meinem Datagrid wählen, und wählen Sie Bearbeiten, Schalter meines WPF-Anwendung zu einer anderen Seite und mein Mitglieds Anzeigen mit Textbox etc .
Ich klicke auf meine Schaltfläche, um seinen BankCheck hinzuzufügen/bearbeiten/löschen und ich kann den ersten BankCheck bearbeiten.
Ich lösche die letzte BankCheck und ich füge eine andere (zum Beispiel).
Ich drücke OK und ich klicke auf "Valid my Edit".
Mein Programm neu erstellt ein neues Mitglied mit seiner Zahlungsanweisung und ich mache diese:
private void EditMember(Member updatedMember)
{
try
{
using (var context = new KravMagaEntities())
{
context.Member.Attach(updatedMember);
context.Entry(updatedMember).State = EntityState.Modified;
context.SaveChanges();
}
ResetAllControls();
States.EnumToText(States.StatesEnum.UpdatingSuccess);
Application.Current.Dispatcher.Invoke(() =>
{
_managementService.IsVisibleAddTab(true);
_managementService.IsVisibleEditTab(false);
});
}
catch (Exception exception)
{
States.EnumToText(States.StatesEnum.Error, exception);
}
}
Aber ich habe diesen Fehler:
A referential integrity constraint violation occurred: The property values that define the referential constraints are not consistent between principal and dependent objects in the relationship.
Ich weiß nicht, wie ich dieses Problem beheben Error.
Vielen Dank.
Mein Code:
private void OnEditMemberBtnClicked(object sender, RoutedEventArgs e)
{
try
{
var isValidateCertificat = IsValidDate(BirthDateTxt);
var isValidateBirth = IsValidDate(CertificateDateTxt);
var isValidateAutorisation = IsValidDate(AutorizationDateTxt);
var isValidateReglement = IsValidDate(RuleDateTxt);
if (isValidateBirth && isValidateCertificat && isValidateAutorisation && isValidateReglement)
{
States.EnumToText(States.StatesEnum.Updating);
var typePaiement = BankCheckRadio.IsChecked.Value;
var typePaiementText = typePaiement ? "Chèque" : "Espèce";
var doctor = "";
var dateCertificate = "";
if (BankCheckRadio.IsChecked.Value)
{
doctor = DoctorTxt.Text;
dateCertificate = CertificateDateTxt.Text;
}
var editedMember = new Member
{
id_Member = _idForEdit,
name_Member = UppercaseChar(NameTxt.Text),
surname_Member = UppercaseChar(SurnameTxt.Text),
birthDate_Member = BirthDateTxt.Text,
autorizationDate_Member = AutorizationDateTxt.Text,
address_Member = UppercaseChar(AddressTxt.Text),
postalCode_Member = PostalCodeTxt.Text,
country_Member = UppercaseChar(CountryTxt.Text),
fixPhone_Member = FixPhoneTxt.Text,
mobilePhone_Member = MobilePhoneTxt.Text,
mail_Member = MailTxt.Text,
beginDate_Member = BeginDateCombo.Text,
ruleDate_Member = RuleDateTxt.Text,
subscription_Member = SubscriptionCombo.Text,
typePaiement_Member = typePaiement,
typePaiementText_Member = typePaiementText,
federationNumero_Member = FederationNumeroTxt.Text.ToUpper(),
level_Member = LevelCombo.Text,
certificate_Member = CertificateCheckbox.IsChecked.Value,
doctor_Member = UppercaseChar(doctor),
certificateDate_Member = dateCertificate,
problem_Member = UppercaseChar(ProblemTxt.Text, true),
emergencyName_Member = UppercaseChar(EmergencyNameTxt.Text),
emergencyPhone_Member = EmergencyPhoneTxt.Text,
BankCheck = _bankChecks
};
if (_bankChecks != null)
{
using (var context = new KravMagaEntities())
{
foreach (var bankCheck in _bankChecks)
{
bankCheck.idMember_BankCheck = editedMember.id_Member;
context.Entry(bankCheck).State = EntityState.Added;
}
context.SaveChanges();
}
}
new Task(() => EditMember(editedMember)).Start();
}
}
catch (Exception exception)
{
States.EnumToText(States.StatesEnum.Error, exception);
}
}
Ja, ich habe diese Links schon gefunden ... Und das habe ich gemacht. – Naografix
Also hast du alles versucht, erwähnt dort und es hat dir nicht geholfen? Aus Ihrer Beschreibung ergeben sich keine kritischen Unterschiede zwischen Ihrem Problem und den in diesen Links genannten Problemen. Ich sehe den vollständigen Code nicht. Wenn Sie weitere Informationen haben, können Sie möglicherweise untersuchen, welche Unterschiede bestehen, und versuchen, das gleiche wie in diesen Beispielen zu erreichen. –
Überprüfen Sie auch, ob Sie Entitäten auf beiden Seiten als geändert markieren (wenn Sie eine Navigationseigenschaft für den Kunden aktualisieren, sollten Sie auch einen entsprechenden BankCheck aktualisieren). Überprüfen Sie diesen Link: http://Stackoverflow.com/a/16128818/3731444 –