I am using EF Core with a generic repository pattern.
The Order table has a one-to-many relationship with OrderItem. OrderId is a foreign key in OrderItem.
The POCO model classes:
public class OrderEntity
{
public long Id { get; set; }
public long PaymentReference { get; set; }
public DateTimeOffset ModifiedDate { get; set; }
public DateTimeOffset CreatedDate { get; set; }
public IList<OrderItemEntity> OrderItemEntities { get; set; }
}
public class OrderItemEntity
{
public long Id { get; set; }
public long OrderId { get; set; }
public Position Position { get; set; }
public AlterationType Type { get; set; }
public AlterationItemType ItemType { get; set; }
public AlterationStatus Status { get; set; }
public double Measurment { get; set; }
public double AlterationCost { get; set; }
}
My service:
public class OrderService : Repository<OrderEntity>, IOrderService
{
public OrderService(SalesContext context) : base(context)
{
}
public long CreateOrder(OrderEntity orderEntity)
{
base.Add(orderEntity);
base.Save();
return orderEntity.Id;
}
public IEnumerable<OrderEntity> FilterOrderByFilterCriteria(long Id)
{
return base.SelectByCriteria(item => item.Id == Id);
}
public IEnumerable<OrderEntity> GetAllOrders()
{
return base.SelectAll("OrderItem");
}
}
Generic repository:
public class Repository<T> : IRepository<T> where T : class
{
private readonly SalesContext _dbContext;
public Repository(SalesContext dbContext)
{
_dbContext = dbContext;
}
public virtual T Add(T obj)
{
_dbContext.Set<T>().Add(obj);
return obj;
}
public virtual void Update(T entity)
{
_dbContext.Entry(entity).State = EntityState.Modified;
_dbContext.SaveChanges();
}
public virtual T Delete(T obj)
{
_dbContext.Set<T>().Remove(obj);
return obj;
}
public virtual IEnumerable<T> SelectAll(string entityToInclude)
{
return _dbContext.Set<T>().Include(entityToInclude).ToList();
}
public virtual IEnumerable<T> SelectByCriteria(Expression<Func<T, bool>> predicate)
{
return _dbContext.Set<T>().Where(predicate);
}
public virtual string Save()
{
_dbContext.SaveChanges();
return string.Empty;
}
}
}
How can I insert multiple order-item when I am inserting order in the same connection to the database?