using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq.Expressions;
using System.Threading;
using System.Threading.Tasks;
namespace WalkingTec.Mvvm.Core
{
///
/// IDataContext
///
public interface IDataContext : IDisposable
{
///
/// IsFake
///
bool IsFake { get; set; }
bool IsDebug { get; set; }
DBTypeEnum DBType { get; set; }
///
/// AddEntity
///
///
///
void AddEntity(T entity) where T : TopBasePoco;
///
/// UpdateEntity
///
void UpdateEntity(T entity) where T : TopBasePoco;
///
/// UpdateProperty
///
void UpdateProperty(T entity, Expression> fieldExp) where T : TopBasePoco;
///
/// UpdateProperty
///
void UpdateProperty(T entity, string fieldName) where T : TopBasePoco;
///
/// DeleteEntity
///
void DeleteEntity(T entity) where T : TopBasePoco;
///
/// CascadeDelete
///
void CascadeDelete(T entity) where T : TreePoco;
///
/// Set
///
///
///
DbSet Set() where T : class;
///
/// Model
///
IModel Model { get; }
///
/// Database
///
DatabaseFacade Database { get; }
///
/// CSName
///
string CSName { get; set; }
#region SaveChange
///
/// SaveChanges
///
///
int SaveChanges();
///
/// SaveChanges
///
///
int SaveChanges(bool acceptAllChangesOnSuccess);
///
/// SaveChangesAsync
///
///
Task SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default(CancellationToken));
///
/// SaveChangesAsync
///
///
Task SaveChangesAsync(CancellationToken cancellationToken = default(CancellationToken));
#endregion
///
/// 初始化
///
///
///
/// 返回true即数据新建完成,进入初始化操作,返回false即数据库已经存在
Task DataInit(object AllModel, bool IsSpa);
IDataContext CreateNew();
IDataContext ReCreate();
///
/// 执行存储过程,返回datatable
///
/// 存储过程名称
/// 参数
///
DataTable RunSP(string command, params object[] paras);
IEnumerable RunSP(string command, params object[] paras);
///
/// 执行sql语句,返回datatable
///
/// 查询sql语句
/// 参数
///
DataTable RunSQL(string command, params object[] paras);
IEnumerable RunSQL(string sql, params object[] paras);
DataTable Run(string sql, CommandType commandType, params object[] paras);
IEnumerable Run(string sql, CommandType commandType, params object[] paras);
object CreateCommandParameter(string name, object value, ParameterDirection dir);
void SetLoggerFactory(ILoggerFactory factory);
}
}