.net 使用EF Dbfirst(详细版本)

先安装需要用的Nuget包:

Microsoft.EntityFrameworkCore

Microsoft.EntityFrameworkCore.Tools //如果用vscode这个包就足够了

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.SqlServer

然后数据库中新建好表我这里做的是登录功能

 映射字符串,Server:你的服务名;Database:数据库名称;uid:用户名;pwd:密码

你安装的是Nuget包: Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Scaffold-DbContext "Server=LAPTOP-KT5D4AIV;Database=UserLogin;Trusted_Connection=True;uid=sa;pwd=123456" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

映射成功后在appsettings.json 中配置连接字符串

 "ConnectionStrings": {
    "DefaultConnection": "Server=LAPTOP-KT5D4AIV;Database=UserLogin;Trusted_Connection=True;uid=sa;pwd=123456"
  },

.net6 中Program配置服务注入

var configuration = builder.Configuration;
builder.Services.AddDbContext<UserLoginContext>(opt =>
{
    //获取连接字符串
    opt.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
    //取消跟踪机制,不需要每次使用的时候Using
    opt.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
});
vs code 配置.net环境 

(1)安装自己需要的.net的sdk版本

(2) 安装 vscode-solution-explorer插件用于创建项目

(3) 安装C#插件

vs code 安装dotnet-ef 工具  : dotnet tool install dotnet-ef -g

vs code 卸载dotnet-ef 工具  : dotnet tool uninstall dotnet-ef -g

vs code Dbfirst 映射字符串   dotnet ef dbContext Scaffold "Server=LAPTOP-KT5D4AIV;Database=UserLogin;Trusted_Connection=True;uid=sa;pwd=123456" Microsoft.EntityFrameworkCore.SqlServer -o Models --force

以上都配置完成后写一个简单的登录功能

 public class LoginService : ILoginService
    {
        public LoginService(UserLoginContext context, IMemoryCache memoryCache)
        {
            Context = context;
            MemoryCache = memoryCache;
        }

        public UserLoginContext Context { get; }
        public IMemoryCache MemoryCache { get; }

        public async Task<Result> ChekLogin(User user)
        {
            Result result = new Result();
            if (string.IsNullOrEmpty(user.UserName))
            {
                result.msg = "请输入账号";
                result.code = false;
            }
            else
            {
                var resUser = await Context.Logins.Where(m => m.UserName == user.UserName).FirstOrDefaultAsync();
                if (resUser == null)
                {
                    result.msg = "账号错误";
                    result.code = false;
                }
                else if (resUser.PassWord == user.Password)
                {
                    resUser.BeforeLoginTime = resUser.LaterLoginTime ?? resUser.FoundTime;
                    resUser.LaterLoginTime = DateTime.Now;
                    Context.Update(resUser);
                    var time = await Context.SaveChangesAsync();
                    if (time > 0)
                    {
                        var userToken = new ResUser();
                        userToken.UserName = resUser.UserName;
                        userToken.Token = Guid.NewGuid().ToString();
                        var hasDic = MemoryCache.TryGetValue("token", out Dictionary<string, ResUser> dic);
                        if (!hasDic)
                        {
                            //如果不存在重新创建一个字典;
                            dic = new Dictionary<string, ResUser>();
                        }
                        dic.Add(userToken.Token, userToken);
                        MemoryCache.Set("token", dic);
                        result.code = true;
                        result.data = userToken.Token;
                        result.msg = "登录成功";
                    }

                }
                result.msg = "密码错误";
                result.code = false;
            }
            return result;

        }
    }

猜你喜欢

转载自blog.csdn.net/weixin_51326081/article/details/129842450