سلام و خسته نباشید دوستان عزیز.
بنده در حال نوشتن یه برنامه کوچیک هستم. شرح مشکل به این صورت هست که من یه تابع استاتیک دارم که هنگام شروع برنامه چک میکنه که آیا جدول هایی که نباید خالی باشن خالی هستن یا نه. و اگه هستن سطر های پیشفرض رو به جدول اضاقه میکنه. بانک اطلاعاتی بوسیله Code first migrations ساخته شده.
این کد تابع :
class DatabaseAufpasser {public static void DatabaseChecker()
{
using (var _db = new DataContext())
{
if (!_db.KasseGemeinsam.Any())
{
_db.KasseGemeinsam.Add(new Models.Data.KasseGemeinsamModel() { Jahr = DateTime.Now.Year.ToString(), Monat = MonatenVertauchen.ZahlZuMonaten(Convert.ToInt32(Da teTime.Now.Month)), Haushalt = 0, Hygine = 0, Mobel = 0, Nahrung = 0, Schreibware = 0, Sonstiges = 0 });
_db.SaveChanges();
}
if (!_db.KassePrivat.Any())
{
_db.KassePrivat.Add(new Models.Data.KassePrivatModel() { Jahr = DateTime.Now.Year.ToString(), Monat = MonatenVertauchen.ZahlZuMonaten(Convert.ToInt32(Da teTime.Now.Month)), UserID = UserIdentity.UserID, Fahrkosten = 0, Hygine = 0, Mobel = 0, Nahrung = 0, Schreibware = 0, Sonstiges = 0 });
_db.SaveChanges();
}
if (!_db.GemeinsamKasse.Any())
{
_db.GemeinsamKasse.Add(new Models.Data.GemeinsamKasse() { Betrag = 0 });
_db.SaveChanges();
}
if (!_db.PrivatKasse.Any())
{
List<int> userIDs = new List<int>();
foreach (var item in _db.UsersTbl)
{
userIDs.Add(item.ID);
}
using (var _db2 = new DataContext())
{
foreach (var item in userIDs)
{
_db2.PrivatKasse.Add(new Models.Data.PrivatKasse() { BenutzerID = item, Betrag = 0 });
}
_db2.SaveChanges();
}
}
}
}
}
داخل کد میبینید که این تابع روی چهار جدول این تست رو انجام میده. روی سه جدول دیگر کاملا درست کار میکنه با اینکه خصوصیات ID همه چهار جدول رقیقا مثل هم هست ولی وقتی که روی کار در جدول آخر میرسه این خطا رو برمیگردونه:
Error.jpg
متن ارور:
System.Data.Entity.Infrastructure.DbUpdateExceptio n ist aufgetreten. HResult=0x80131501
Nachricht = An error occurred while updating the entries. See the ier exception for details.
Quelle = EntityFramework
Stapelüberwachung:
bei System.Data.Entity.Internal.InternalContext.SaveCh anges()
bei System.Data.Entity.Internal.LazyInternalContext.Sa veChanges()
bei System.Data.Entity.DbContext.SaveChanges()
bei MoneyVerwaltung.DatabaseAufpasser.DatabaseChecker( ) in C:UsersMMDDocumentsVisual Studio 2017ProjectsMoneyVerwaltung 1.0MoneyVerwaltungMoneyVerwaltungDatabaseAufpas ser.cs: Zeile50
bei MoneyVerwaltung.frmHome..ctor() in C:UsersMMDDocumentsVisual Studio 2017ProjectsMoneyVerwaltung 1.0MoneyVerwaltungMoneyVerwaltungfrmHome.cs: Zeile27
bei MoneyVerwaltung.frmAnmeldung.button1_Click(Object sender, EventArgs e) in C:UsersMMDDocumentsVisual Studio 2017ProjectsMoneyVerwaltung 1.0MoneyVerwaltungMoneyVerwaltungfrmAnmeldung.c s: Zeile59
bei MoneyVerwaltung.frmAnmeldung.txtPassword_Keypress( Object sender, KeyPressEventArgs e) in C:UsersMMDDocumentsVisual Studio 2017ProjectsMoneyVerwaltung 1.0MoneyVerwaltungMoneyVerwaltungfrmAnmeldung.c s: Zeile84
bei System.Windows.Forms.Control.OnKeyPress(KeyPressEv entArgs e)
bei System.Windows.Forms.Control.ProcessKeyEventArgs(M essage& m)
bei System.Windows.Forms.Control.ProcessKeyMessage(Mes sage& m)
bei System.Windows.Forms.Control.WmKeyChar(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.TextBoxBase.WndProc(Message& m)
bei System.Windows.Forms.TextBox.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.O nMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.W ndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallba ck(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchM essageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager. System.Windows.Forms.UnsafeNativeMethods.IMsoCompo nentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.Run MessageLoopIer(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.Run MessageLoop(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.Run(Form mainForm)
bei MoneyVerwaltung.Program.Main() in C:UsersMMDDocumentsVisual Studio 2017ProjectsMoneyVerwaltung 1.0MoneyVerwaltungMoneyVerwaltungProgram.cs: Zeile19Iere Ausnahme 1:
UpdateException: An error occurred while updating the entries. See the ier exception for details.Iere Ausnahme 2:
SqlException: Violation of PRIMARY KEY constraint 'PK_dbo.PrivatKasses'. Caot insert duplicate key in object 'dbo.PrivatKasses'. The duplicate key value is (0).
The statement has been terminated.
موفق و سربلند باشید.
برچسب:
نویسنده: محمد رضا جوادیان