Golden Basim Ответов: 0

Savechanges() не вставляет никаких записей в базу данных


SaveChanges() не вставляет никаких записей в базу данных
обновление кода работает но вставка кода не работает
мой код :

var DBs2 = ConnectionTools.OpenConn();
                DBs2.Configuration.AutoDetectChangesEnabled = false;
                DBs2.Configuration.ValidateOnSaveEnabled = false;
var resList = CreatedSerials.Where(u => u.Item4 == VID).ToList();
                    foreach (var r in resList)
                    {
                        // if serial id ==0 => new then add it as new
                        if ( r.Item7 == 0)
                        {
                            try
                            {
                               
                                var purchasesItemSerials = new purchases_item_seriels()
                                {
                                    pitem_ID = pitem_ID,
                                    stitems_ID = r.Item1,
                                    pmain_ID = PurchasesID,
                                    pitem_virtualID = r.Item4,
                                    pis_CustomSerial = r.Item2,
                                    pis_ExpireDate = r.Item3,
                                    pis_Statues = 0,
                                    ss_StoreID = Convert.ToInt32(gridView1.GetRowCellValue(ItemImdex, "storeID")),
                                    Purchases_Price = Convert.ToDecimal(gridView1.GetRowCellValue(ItemImdex, "item_NetSmallestUnitPrice")),
                                };
                                ss.Add(purchasesItemSerials);
                               
                                
                            }
                            catch (Exception eeeeee)
                            {
                                Msg.Show("", eeeeee.ToString(), 0);return;
                            }
                        } else
                        {
                            var DBs350 = ConnectionTools.OpenConn();
                            var UpdateSerial = DBs350.purchases_item_seriels.Find(r.Item7);
                            UpdateSerial.pitem_ID = pitem_ID;
                            UpdateSerial.stitems_ID = r.Item1;
                            UpdateSerial. pmain_ID = PurchasesID;
                            UpdateSerial.pitem_virtualID = r.Item4;
                            UpdateSerial.pis_CustomSerial = r.Item2;
                            UpdateSerial.pis_ExpireDate = r.Item3;
                            UpdateSerial.pis_Statues = r.Item6;
                            UpdateSerial.ss_StoreID = 
                     Convert.ToInt32(gridView1.GetRowCellValue(ItemImdex, "storeID"));
                            UpdateSerial.Purchases_Price = Convert.ToDecimal(gridView1.GetRowCellValue(ItemImdex, "item_NetSmallestUnitPrice"));
                            DBs350.SaveChanges();
                        }
                        
                    }
                    try
                    {
                        DBs2.purchases_item_seriels.AddRange(ss);
                        DBs2.SaveChanges();
                    }
                    catch (Exception eeeeee)
                    {
                        Msg.Show("", eeeeee.ToString(), 0);return;
                    }


Что я уже пробовал:

я тоже пытался :
DBs2.Configuration.AutoDetectChangesEnabled = true;
                DBs2.Configuration.ValidateOnSaveEnabled = true;


данные не вставляются , ошибки не появляются


-- я пытался :
int returnCode = DBs2.SaveChanges();

и код возврата = 0


-- я пробовал и это :

// if this serial is new
                    var NewSerialresList = CreatedSerials.Where(u => u.Item4 == VID && u.Item7 == 0).ToList();
                    if (NewSerialresList.Count() > 0)
                    {
                     
                        var ss = new List<purchases_item_seriels>();

                        foreach (var r in NewSerialresList)
                        {
                            try
                            {
                                mrsalesdbEntities DBs002 = new mrsalesdbEntities();
                                var purchasesItemSerials = new purchases_item_seriels()
                                {
                                    pitem_ID = pitem_ID,
                                    stitems_ID = r.Item1,
                                    pmain_ID = PurchasesID,
                                    pitem_virtualID = r.Item4,
                                    pis_CustomSerial = r.Item2,
                                    pis_ExpireDate = r.Item3,
                                    pis_Statues = 0,
                                    ss_StoreID = Convert.ToInt32(gridView1.GetRowCellValue(ItemImdex, "storeID")),
                                    Purchases_Price = Convert.ToDecimal(gridView1.GetRowCellValue(ItemImdex, "item_NetSmallestUnitPrice")),
                                };
                                //ss.Add(purchasesItemSerials);
                                DBs002.purchases_item_seriels.Add(purchasesItemSerials);
                                DBs002.SaveChanges();
                            }
                            catch (Exception ex)
                            {
                                Msg.Show("", ex.ToString(), 0);
                            }
                            
                        }

                        int CC = ss.Count();
                        
                    }

George Swan

Вы проверили, что переменная 'ss' не пуста?

Golden Basim

нет 'ss' есть 2 записи ( количество новых записей).

sajeetharan

что такое DBs350 здесь ?

Golden Basim

публичный статический mrsalesdbEntities OpenConn()
{
mrsalesdbEntities MrSalesContext = новые mrsalesdbEntities();
MrSalesContext.ChangeDatabase
(
initialCatalog: myconn.в базе данных,
порт: конвертировать.ToUInt32( myconn.port),
идентификатор пользователя: myconn.uid,
пароль: myconn.password,
источник данных: myconn.server
);
возврат MrSalesContext;
}

var DBs350 = ConnectionTools.OpenConn();

Gerry Schmitz

Вы должны попробовать какой-нибудь "чистый" EF-код, а не свой "фреймворк" (который, очевидно, имеет некоторые проблемы).

И подход "ленивого человека" "var" также не обеспечивает большой "ясности".

(Вы можете использовать "var"; затем используйте VS, чтобы заменить его явным определением типа.)

Golden Basim

я попробовал это и тот же результат

// если этот серийный номер новый
var NewSerialresList = CreatedSerials.Где(у =&ГТ; у.Item4 == вид &усилитель;& ЕД.Item7 == 0).Список();
если (NewSerialresList.Count() > 0)
{


var ss = новый список<purchases_item_seriels>();

foreach (var r в NewSerialresList)
{
пробовать
{
//var DBs002 = ConnectionTools.OpenConn();
mrsalesdbEntities DBs002 = новые mrsalesdbEntities();
var purchasesItemSerials = новые purchases_item_seriels()
{
pitem_ID = pitem_ID,
stitems_ID = Р.Элемент1,
pmain_ID = PurchasesID,
pitem_virtualID = r.Item4,
pis_CustomSerial = Р.Место № 2,
pis_ExpireDate = r.Item3,
pis_Statues = 0,
ss_StoreID = конвертировать.ToInt32(gridView1.GetRowCellValue(ItemImdex, "storeID")),
Purchases_Price = Конвертировать.ToDecimal(gridView1.GetRowCellValue(ItemImdex, "item_NetSmallestUnitPrice")),
};
//ss.Add(purchasesItemSerials);
DBs002.purchases_item_seriels.Добавить(purchasesItemSerials);
DBs002.Метод SaveChanges();
}
поймать (исключение бывший)
{
Msg.Show("", ex.ToString(), 0);
}

}


}

0 Ответов