Xamarin sqLite.SQLiteException: ограничение с использованием двух баз данных - PullRequest
0 голосов
/ 29 февраля 2020

В основном то, что я пытаюсь сделать, это сохранить одни и те же данные в двух БД, БД абсолютно одинаковы (только меняет имя БД), когда я сохраняю данные в первой БД, это нормально, когда он пытается сохранить в второй показывает ошибку sqLite.SQLiteException: Constraint вот код:

var order = new Order
            {
                Id = Generator.GenerateKey(),
                OrderNumber = OrderN,
                OrderDate = DateTimeHelpers.GetDate(),
                CustomerId = SelectedCustomer.Id,
                TotalPrice = totalPrice,
                Discount = DeductMoney,
                TaxAmount = TaxAmount,
                IsSync = false,
                PayMethod = PayMethod,
                Customer = new Customer
                {
                    Id = SelectedCustomer.Id
                },
                DiscountType = (int)PopupDiscountInfo.DiscountType,
                Creator = StoreSettings?.StoreOwner,
                Notes = Notes
            };
            order.OrderDetails = new List<OrderDetail>();

            var orderDetails = new List<OrderDetail>();
            foreach (var item in ProductInSaleOrders)
            {
                orderDetails.Add(new OrderDetail
                {
                    Id = Generator.GenerateKey(),
                    ProductId = item.Id,
                    UnitId = item.UnitId,
                    Product = new Product
                    {
                        Id = item.Id
                    },
                    Unit = new Unit
                    {
                        Id = item.UnitId
                    },
                    Price = item.Price,
                    Quantity = item.Quantity
                });
            }

            await _orderService.SaveOrderAsync(order);
            await _orderDetailService.SaveOrderDetailAsync(orderDetails);
            await _orderService.SaveOrderAsyncB(order);
            await _orderDetailService.SaveOrderDetailBAsync(orderDetails);

при достижении await _orderService.SaveOrderAsyncB(order); появляется ошибка

OrderService.cs

public async Task SaveOrderAsyncB(Order order)
        {
            await _orderRepositoryB.InsertWithChildrenAsync(CryptoEngine.EncryptOrder(order));
        }

я читал об этой ошибке, но ничто не решает мою проблему

Редактировать: когда я удаляю "await" из await _orderService.SaveOrderAsyncB(order); он работает, но данные не сохраняются в БД, я проверяю соединения и все в порядке, но я получаю сообщение об ошибке ограничения, даже когда две БД полностью пусты.

1 Ответ

0 голосов
/ 02 марта 2020

Проблема заключалась в том, что две таблицы, которые я пытался вставить (Order и OrderDetail), связаны с другими таблицами, такими как costumer, podruct, et c. решение сохраняло все данные в обеих БД, а не только в первой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...