一:注意:如果项目VS是3.0版本 项目却要求2.1那么项目就要用命令建立 步骤:
1:没有2.1先安装2.1 下载2.1版本 (路径:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore22)
2:安装完成之后 用cmd(管理员身份运行)
3:首先创建文件夹(注意:项目名称就是文件夹的名称)
4: 创建文件夹之后选择盘符cd进入文件夹 例如:cd C:\课上测试呀\ASP.NETCore案\JiaHua.Market\JiaHua.Market.ViewModel
5:然后使用命令创建项目
dotnet new mvc --framework netcoreapp2.1 (2.1MVC创建命令)
dotnet new classlib --framework netcoreapp2.1 (2.1类库创建命令)
其他Dotnet New 命名:https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new?tabs=netcore22
6:右键VS管理员运行 选择打开现有项目或解决方案 在解决方案中右键添加现有项目将每一个项目文件夹中以.csproj结尾的添加打开即可
二:首先建立项目层次 各项目所代表的层如下:
JiaHua.Market.Web :UI层
JiaHua.Market.ViewModel :页面实体层
JiaHua.Market.Service :业务逻辑层
JiaHua.Market.Repository :数据访问层
JiaHua.Market.Model :实体层
JiaHua.Market.Infrastructure :帮助类/公共层/基础设施
JiaHua.Market.Component :组件层
<JiaHua.Market. Interface :第三方接口 JiaHua.Market.Api :web Api层>(本项目这两层暂时没用到)
三:在实体层JiaHua.Market.Model中添加实体类 (这个类只是举一个例子 可以多个)
using System;
using System.ComponentModel.DataAnnotations;
namespace JiaHua.Market.Model
{
/// <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; }
}
}
四:在实体层JiaHua.Market.Model安装三个包 步骤:左上方 >视图 >其他窗口 >程序包管理控制台 输入包命令如下:
Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 2.1.1
Install-Package Microsoft.EntityFrameworkCore.Tools -version 2.1.1
Install-Package Microsoft.EntityFrameworkCore.SqlServer.Design
五:将实体类生成数据库 在实体层JiaHua.Market.Model添加MarketContext类
public class MarketContext : DbContext
{
public DbSet<AdminInfo> AdminInfo { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("server=localhost;database=Market;uid=sa;pwd=sa;");
}
}
然后通过以下两个命令添加更新数据库 Add-Migration build001(build001这个名字命名每次不能重复)
更新数据库: Update-Database
注意:(三,四,五三个大步骤可以省略 因为在后续中MarketContext类以及Migration包是要删除的 可以换成从数据库生成实体类的方法 不过一样要安装(第四个步骤)中2.1的包)
六:数据访问层
添加基类RepositoryBase 添加NuGet程序包 System.Linq.Dynamic.Core
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Linq.Dynamic.Core; //添加NuGet程序包 System.Linq.Dynamic.Core
namespace JiaHua.Market.Repository
{
/// <summary>
/// 仓储基类
/// </summary>
/// <typeparam name="T">实体类型</typeparam>
public abstract class RepositoryBase<T> : IRepository<T> where T : class
{
//定义数据访问上下文对象
protected readonly SyDbContext _dbContext;
/// <summary>
/// 通过构造函数注入得到数据上下文对象实例
/// </summary>
/// <param name="dbContext"></param>
public RepositoryBase(SyDbContext dbContext)
{
_dbContext = dbContext;
}
#region 同步
/// <summary>
/// 判断记录是否存在
/// </summary>
/// <param name="predicate">lambda表达式条件</param>
/// <returns></returns>