添加项目文件。
This commit is contained in:
78
Entities/Context/UnitOfWork/IUnitOfWork.cs
Normal file
78
Entities/Context/UnitOfWork/IUnitOfWork.cs
Normal file
@@ -0,0 +1,78 @@
|
||||
|
||||
|
||||
namespace SharedDATA.Api
|
||||
{
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||
|
||||
/// <summary>
|
||||
/// Defines the interface(s) for unit of work.
|
||||
/// </summary>
|
||||
public interface IUnitOfWork : IDisposable
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Changes the database name. This require the databases in the same machine. NOTE: This only work for MySQL right now.
|
||||
/// </summary>
|
||||
/// <param name="database">The database name.</param>
|
||||
/// <remarks>
|
||||
/// This only been used for supporting multiple databases in the same model. This require the databases in the same machine.
|
||||
/// </remarks>
|
||||
void ChangeDatabase(string database);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the specified repository for the <typeparamref name="TEntity"/>.
|
||||
/// </summary>
|
||||
/// <param name="hasCustomRepository"><c>True</c> if providing custom repositry</param>
|
||||
/// <typeparam name="TEntity">The type of the entity.</typeparam>
|
||||
/// <returns>An instance of type inherited from <see cref="IRepository{TEntity}"/> interface.</returns>
|
||||
IRepository<TEntity> GetRepository<TEntity>(bool hasCustomRepository = false) where TEntity : class;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the db context.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
TContext GetDbContext<TContext>() where TContext : DbContext;
|
||||
|
||||
/// <summary>
|
||||
/// Saves all changes made in this context to the database.
|
||||
/// </summary>
|
||||
/// <param name="ensureAutoHistory"><c>True</c> if sayve changes ensure auto record the change history.</param>
|
||||
/// <returns>The number of state entries written to the database.</returns>
|
||||
int SaveChanges(bool ensureAutoHistory = false);
|
||||
|
||||
/// <summary>
|
||||
/// Asynchronously saves all changes made in this unit of work to the database.
|
||||
/// </summary>
|
||||
/// <param name="ensureAutoHistory"><c>True</c> if save changes ensure auto record the change history.</param>
|
||||
/// <returns>A <see cref="Task{TResult}"/> that represents the asynchronous save operation. The task result contains the number of state entities written to database.</returns>
|
||||
Task<int> SaveChangesAsync(bool ensureAutoHistory = false);
|
||||
|
||||
/// <summary>
|
||||
/// Executes the specified raw SQL command.
|
||||
/// </summary>
|
||||
/// <param name="sql">The raw SQL.</param>
|
||||
/// <param name="parameters">The parameters.</param>
|
||||
/// <returns>The number of state entities written to database.</returns>
|
||||
int ExecuteSqlCommand(string sql, params object[] parameters);
|
||||
|
||||
/// <summary>
|
||||
/// Uses raw SQL queries to fetch the specified <typeparamref name="TEntity"/> data.
|
||||
/// </summary>
|
||||
/// <typeparam name="TEntity">The type of the entity.</typeparam>
|
||||
/// <param name="sql">The raw SQL.</param>
|
||||
/// <param name="parameters">The parameters.</param>
|
||||
/// <returns>An <see cref="IQueryable{T}"/> that contains elements that satisfy the condition specified by raw SQL.</returns>
|
||||
IQueryable<TEntity> FromSql<TEntity>(string sql, params object[] parameters) where TEntity : class;
|
||||
|
||||
/// <summary>
|
||||
/// Uses TrakGrap Api to attach disconnected entities
|
||||
/// </summary>
|
||||
/// <param name="rootEntity"> Root entity</param>
|
||||
/// <param name="callback">Delegate to convert Object's State properities to Entities entry state.</param>
|
||||
void TrackGraph(object rootEntity, Action<EntityEntryGraphNode> callback);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user