0
據我所知,Unit Of Work將所有倉庫保存在管道中,並稍後作爲一個數據庫事務處理。根據我的下面的情況。通用倉庫模式與關係表中的工作單元
public class Customer
{
[Key]
public int Id { get; set; }
public string CustomerId { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
public string Address { get; set; }
public bool IsActive { get; set; }
}
public class Order
{
[Key]
public int Id { get; set; }
[ForeignKey("Customer")]
public int CustomerId { get; set; }
[ForeignKey("PaymentMode")]
public int PayModeId { get; set; }
public DateTime OrderDate { get; set; }
public bool IsActive { get; set; }
public Customer Customer { get; set; }
public PaymentMode PaymentMode { get; set; }
}
public class OrderProducts
{
[Key]
public int Id { get; set; }
[ForeignKey("Order")]
public int OrderId { get; set; }
[ForeignKey("Products")]
public int ProductId { get; set; }
public int Quantity { get; set; }
public Order Order { get; set; }
public Products Products { get; set; }
}
public class DeliveryTrack
{
[Key]
public int Id { get; set; }
[ForeignKey("Order")]
public int OrderId { get; set; }
[ForeignKey("DeliveryStatus")]
public int DelStatusId { get; set; }
public float TotalAmount { get; set; }
public bool IsActive { get; set; }
public Order Order { get; set; }
public DeliveryStatus DeliveryStatus { get; set; }
}
Order
類,是由OrderProducts
和DeliveryTrack
在DB記錄引用未插入的OrderProducts
但它插入用於DeliveryTrack
。如果DeliveryTrack
被排除在外,如果我說
ObjUow.GetRepository<OrderProducts>().Insert(objOrderProducts);
ObjUow.Save();
它的工作。 Order
是否有任何問題被2個實體引用。
請幫忙。
public int AddOrderDetailsOms(CustomerDto customerDto,PaymentModeDto
paymentDto, OrderProductsDto orderProductsDto)
{
using (var dbContextTransaction = ObjUow.BeginDataTransaction())
{
try
{
Customer objCustomer = new Customer
{
// CustomerId = customerDto.CustomerId,
Name = customerDto.Name,
Address = customerDto.Address,
PhoneNumber = customerDto.PhoneNumber,
IsActive = true
};
Order objOrder = new Order
{
OrderDate = DateTime.Now,
IsActive = true,
PayModeId = paymentDto.Id,
Customer = objCustomer
};
if (orderProductsDto != null)
{
foreach (var prodId in orderProductsDto.ProductId)
{
OrderProducts objOrderProducts = new OrderProducts
{
// OrderId = orderId,
ProductId = prodId,
Quantity = 1,
Order = objOrder
};
}
}
DeliveryTrack objDeliveryTrack = new DeliveryTrack
{
// OrderId = orderId,
DelStatusId = 1,
TotalAmount = 120.00f,
Order = objOrder
};
ObjUow.GetRepository<DeliveryTrack>().Insert(objDeliveryTrack);
ObjUow.Save();
dbContextTransaction.Commit();
return 1;
}
catch (Exception ex)
{
dbContextTransaction.Rollback();
throw ex;
}
}
}
這很好,garethb,非常感謝,它工作得很好。 – Chinmay
僅供參考,我在猜測您的存儲庫Insert()調用DBContext.Add()時,Add()方法將正確更新您的整個對象圖並按正確的順序。所以你也可以做同樣的付款。如果以其他方式進行,並向客戶添加訂單列表並插入客戶,它仍然有效。 – garethb
感謝信息garethb,我會檢查。請幫助我解決瓶頸問題。 – Chinmay