本文整理汇总了C#中Order.SetCreationDateTime方法的典型用法代码示例。如果您正苦于以下问题:C# Order.SetCreationDateTime方法的具体用法?C# Order.SetCreationDateTime怎么用?C# Order.SetCreationDateTime使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Order
的用法示例。
在下文中一共展示了Order.SetCreationDateTime方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Store
public async Task<Order> Store(Order newOrder)
{
using (var context = new ApplicationDbContext())
{
var dbOrder = await context.Orders
.Include(x => x.Items)
.Include(x => x.Manager)
.Include(x => x.Items.Select(y => y.Product))
.Include(x => x.Items.Select(y => y.Product.Accessorises))
.SingleOrDefaultAsync(x => x.Id == newOrder.Id);
if (dbOrder == null)
{
//новый заказ
var items = newOrder.Items;
newOrder.SetCreationDateTime(DateTime.Now);
newOrder.SetItems(new List<OrderItem>());
if (newOrder.Manager != null)
{
context.Managers.Attach(newOrder.Manager);
}
context.Orders.Add(newOrder);
await context.SaveChangesAsync();
var newItems = items.Select(x => new OrderItem(newOrder.Id, x.Product, x.Count)).ToArray();
foreach (var item in newItems)
{
item.ClearEntity();
}
context.OrderItems.AddOrUpdate(newItems);
newOrder.SetItems(newItems);
await context.SaveChangesAsync();
return newOrder;
}
context.Entry(dbOrder).CurrentValues.SetValues(newOrder);
//Обновим заказы
//сперва удалим все устаревшие связи на заказы
foreach (var dbItem in dbOrder.Items.ToList())
if (newOrder.Items.All(s => s.ProductId != dbItem.ProductId))
context.OrderItems.Remove(dbItem);
foreach (var newItem in newOrder.Items)
{
var dbItem = dbOrder.Items.SingleOrDefault(s => s.ProductId == newItem.ProductId);
if (dbItem != null)
//нужно обновить существующий товар в заказе
context.Entry(dbItem).CurrentValues.SetValues(newItem);
else
{
//очистим, во избежание дубликатов продукта
newItem.ClearEntity();
//нужно создать новый заказ в товаре
newItem.SetOrderId(newOrder.Id);
dbOrder.Items.Add(newItem);
}
}
//Обновим менеджера
if (dbOrder.Manager != null)
{
if (newOrder.Manager != null)
{
if (dbOrder.Manager.Id == newOrder.Manager.Id)
{
// no relationship change, only scalar prop.
context.Entry(dbOrder.Manager).CurrentValues.SetValues(newOrder.Manager);
}
else
{
if (newOrder.Manager.Id != 0)//изменился менеджер
{
// подразумеваем, что новый менеджер уже существует
context.Managers.Attach(newOrder.Manager);
dbOrder.SetManager(newOrder.Manager);
}
else
{
throw new NotImplementedException("Создание менеджера таким образом не поддерживается");
}
}
}
else // relationship has been removed
dbOrder.SetManager(null);
}
else
{
if (newOrder.Manager != null) //изменился менеджер
{
if (newOrder.Manager.Id != 0)
{
// подразумеваем, что новый менеджер уже существует
context.Managers.Attach(newOrder.Manager);
dbOrder.SetManager(newOrder.Manager);
}
else
{
throw new NotImplementedException("Создание менеджера таким образом не поддерживается");
}
}
//else ничего не поменялось
}
await context.SaveChangesAsync();
return dbOrder;
//.........这里部分代码省略.........
开发者ID:ulmer-morozov,项目名称:TypeScipt-AngularJS-ASP.NET-WebApi-Example,代码行数:101,代码来源:EfOrderRepository.cs