一、创建项目
1. 表示层 解决方案名:ZhouYu.Market 、ZhouYu.Market.Web
2. 业务层 ZhouYu.Market.Service
3. 数据访问层 ZhouYu.Market.Repository
4. 实体层 ZhouYu.Market.Model
5. 公共层 ZhouYu.Market.Infrastructure
6. 页面实体层---用于放Success/date ZhouYu.Market.ViewModel
7. 组件层----服务 ZhouYu.Market.Components
8. 第三方--短信
9. WebApi
注意:
1. 除表示层创建为Web项目、其他层皆为.NETCore类库
2. 框架搭好之后每个层添加所用到的引用
二、实体层操作
2.1 在实体层添加AdminInfo管理员类(vs版本2.1直接添加、3.0版本用命令执行)
/// <summary>
/// 管理员信息表
/// </summary>
public class AdminInfo
{
/// <summary>
/// 管理员Id
/// </summary>
[Key]
public int AdminId { get; set; }
/// <summary>
/// 真实姓名
/// </summary>
[MaxLength(50)]
public string RealName { get; set; }
/// <summary>
/// 登录名
/// </summary>
public string LoginName { get; set; }
/// <summary>
/// 登录密码
/// </summary>
public string LoginPwd { get; set; }
/// <summary>
/// 性别
/// </summary>
public short Sex { get; set; }
/// <summary>
/// 手机号
/// </summary>
public Int64 Telphone { get; set; }
/// <summary>
/// 邮箱
/// </summary>
public string Email { get; set; }
/// <summary>
/// 角色Id
/// </summary>
public int RoleId { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
/// <summary>
/// 创建时间
/// </summary>
public DateTime CreateTime { get; set; }
/// <summary>
/// 最后一次登录时间
/// </summary>
public DateTime LastLoginTime { get; set; }
/// <summary>
/// 登录时间
/// </summary>
public DateTime LoginTime { get; set; }
/// <summary>
/// 修改时间
/// </summary>
public DateTime UpdateTime { get; set; }
/// <summary>
/// QQ
/// </summary>
public string QQ { get; set; }
/// <summary>
/// 状态1:启用 0:禁用
/// </summary>
public short Status { get; set; }
}
2.2 打开Nuget管理窗口
2.3 在实体层安装Nuget包
Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 2.1.1
Install-Package Microsoft.EntityFrameworkCore.Tools -version 2.1.1
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
2.4 创建一个MarketContext类
public class MarketContext: DbContext //管理上下文类---设置连接字符串
{
public DbSet<AdminInfo> AdminInfo { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder dbContextOptionsBuilder)
{
dbContextOptionsBuilder.UseSqlServer("server=localhost;database=Market;uid=sa;pwd=sa");
}
}
2.5 数据迁移
Add-Migration build125、Update-Database
三、数据访问层操作
注意:(添加Nuget包System.Linq.Dynamic.Core)
3.1 创建IRepository接口
/// <summary>
/// 定义泛型仓储接口
/// </summary>
/// <typeparam name="TEntity">实体类型</typeparam>
public interface IRepository<T> where T : class
{
#region 同步
/// <summary>
/// 判断记录是否存在
/// </summary>
/// <param name="predicate">lambda表达式条件</param>
/// <returns></returns>
bool IsExist(Expression<Func<T, bool>> predicate);
/// <summary>
/// 新增实体
/// </summary>
/// <param name="entity">实体</param>
/// <param name="autoSave">是否立即执行保存</param>
/// <returns></returns>
bool Add(T entity, bool autoSave = true);
/// <summary>
/// 批量添加
/// </summary>
/// <param name="entities">实体列表</param>
/// <param name="autoSave">是否立即执行保存</param>
/// <returns></returns>
bool AddRange(IEnumerable<T> entities, bool autoSave = true);
/// <summary>
/// 更新实体
/// </summary>
/// <param name="entity">实体</param>
/// <param name="autoSave">是否立即执行保存</param>
bool Update(T entity, bool autoSave = true);
/// <summary>
/// 更新部分属性
/// </summary>
/// <param name="entity">实体</param>
/// <param name="autoSave">是否立即执行保存</param>
/// <param name="updatedProperties">要更新的字段</param>
/// <returns></returns>
bool Update(T entity, bool autoSave = true, params Expression<Func<T, object>>[] updatedProperties);
/// <summary>
/// 更新实体部分属性,泛型方法
/// </summary>
/// <param name="entity">实体</param>
/// <param name="autoSave">是否立即执行保存</param>
/// <param name="updatedProperties">要更新的字段</param>
/// <returns></returns>
bool Update<Entity>(Entity entity, bool autoSave = true, params Expression<Func<Entity, object>>[] updatedProperties) where Entity : class;
/// <summary>
/// 批量更新实体
/// </summary>
/// <param name="entities">实体列表</param>
/// <param name="autoSave">是否立即执行保存</param>
bool UpdateRange(IEnumerable<T> entities, bool autoSave = true);