【发布时间】:2020-02-29 15:42:59
【问题描述】:
基本上我想要做的是将相同的数据保存在两个数据库中,数据库完全相同(仅更改数据库名称),当我将数据保存在第一个数据库中时很好,当它尝试保存在第二个显示错误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 _orderService.SaveOrderAsyncB(order); 中删除“等待”时,它看起来可以工作,但没有数据保存到数据库中,我检查了连接,一切正常,但即使在两个数据库完全是空的。
【问题讨论】:
-
您确定您使用的是两个不同的连接吗?您确定在 2nd db 上没有违反任何限制吗?
-
@Jason 我很确定第二个连接有效(在我遇到问题之前,因为我的应用程序找不到第二个,所以如果我使用第一个数据库的连接,我永远不会注意到第二个数据库文件不存在)
-
如果交换保存操作的顺序,行为是否会改变?
-
您确定数据库完全相同吗?有关错误消息,请参阅 this answer。
-
@Jason 如果我交换订单我与第二个数据库有同样的问题,所以在同一个数据库中保存两次不是问题,问题在第二个数据库中。