ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码

一.新建项目

  • 使用Visual Studio工具新建项目
  • 项目类型 Web
  • 选择 ASP.NET Web 应用程序(.NET Framework)
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第1张图片
  • 选择MVC
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第2张图片

二.导入HTML静态模板

  • 将登录页和首页html文件拷贝到项目文件夹Views下的Home里

  • 更改文件后缀为:cshtml
    在这里插入图片描述

  • 项目文件夹Controller 里 HomeController控制器写登陆页视图方法
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第3张图片

  • 将模板中的css文件和js文件拷贝到项目里

  • 在页面引入js、css文件位置加入:“~/“
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第4张图片

三.添加分层架构

解决方案下新建项目:

  • 添加实体层项目,项目命名规范.Model,项目类型:类库 ,语言:C#
  • 添加数据访问层项目,项目命名规范.DAL,项目类型:类库 ,语言:C#
  • 添加业务逻辑层项目,项目命名规范.BLL,项目类型:类库 ,语言:C#
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第5张图片

四.实体层

  • 实体层项目右键→添加→新建项→ADO.NET 实体数据模型
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第6张图片

  • 选择模型内容:下一步
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第7张图片

  • 选择您的数据连接:新建连接,输入数据库账户密码,选择数据库
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第8张图片

  • 创建完成后出现:”Model1.edmx“文件
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第9张图片

  • 实体层项目新建类:OpercteResult
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第10张图片

五.数据访问层

  • 添加类:DbContextFactory
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Runtime.Remoting.Messaging;
using System.Text;
using System.Threading.Tasks;

namespace WangQi.EntityFramework.DAL
{
    public class DbContextFactory where TS : DbContext, new()
    {
        public static DbContext GetCarrentDcontext()
        {
            var dbContext = CallContext.GetData(typeof(TS).Name) as DbContext;
            if (dbContext != null)
            {
                return dbContext;
            }
            dbContext = new TS();
            CallContext.SetData(typeof(TS).Name, dbContext);
            return dbContext;
        }
    }
}

  • 添加类:BaseRepository
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace WangQi.EntityFramework.DAL
{
    public class BaseRepository where T : class, new() where TS : DbContext, new()
    {
        private DbContext dbContext = DbContextFactory.GetCarrentDcontext();
        /// 
        /// 通用单表添加方法
        /// 
        /// 
        /// 
        public bool Add(T entity)
        {
            dbContext.Set().Add(entity);
            return dbContext.SaveChanges() > 0;
        }
        /// 
        /// 通用单表删除方法
        /// 
        /// 
        /// 
        public bool Delete(T entity)
        {
            dbContext.Entry(entity).State = EntityState.Deleted;
            return dbContext.SaveChanges() > 0;
        }
        /// 
        /// 通用单表批量删除,通过对象集合
        /// 
        /// 
        /// 
        public bool Delete(List entityList)
        {
            dbContext.Set().RemoveRange(entityList);
            return dbContext.SaveChanges() > 0;
        }
        /// 
        /// 通用单表批量删除,通过id集合
        /// 
        /// 
        /// 
        public bool Delete(List ids)
        {
            foreach (var item in ids)
            {
                var t = dbContext.Set().Find(item);
                dbContext.Set().Remove(t);
            }
            return dbContext.SaveChanges() > 0;
        }
        /// 
        /// 通用单表修改方法
        /// 
        /// 
        /// 
        public bool Update(T entity)
        {
            dbContext.Entry(entity).State = EntityState.Modified;
            return dbContext.SaveChanges() > 0;
        }
        /// 
        /// 返回一个数据集合
        /// 
        /// 
        public List QueryList(Expression> lamdaExpression)
        {
            return dbContext.Set().Where(lamdaExpression).ToList();
        }
        /// 
        /// 返回单个对象
        /// 
        /// 
        /// 
        public T Query(Expression> lamdaExpression)
        {
            return dbContext.Set().Where(lamdaExpression).SingleOrDefault();
        }
        /// 
        /// 判断对象是否存在
        /// 
        /// 
        /// 
        public bool Exist(Expression> lamdaExpression)
        {
            return dbContext.Set().Where(lamdaExpression).Any();
        }
        /// 
        /// 分页查询
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public List QueryPageList(int pageIndex, int pageSize, Expression> lamdaExpression, Expression> orderBy, out int count, bool isAcs = true)
        {
            count = dbContext.Set().Where(lamdaExpression).Count();
            if (isAcs)
            {
                return dbContext.Set().Where(lamdaExpression)
                                         .OrderBy(orderBy)
                                         .Skip((pageIndex - 1) * pageSize)
                                         .Take(pageSize).ToList();
            }
            else
            {
                return dbContext.Set().Where(lamdaExpression)
                                         .OrderByDescending(orderBy)
                                         .Skip((pageIndex - 1) * pageSize)
                                         .Take(pageSize).ToList();
            }
        }
        /// 
        /// 返回总记录数
        /// 
        /// 
        /// 
        public int QueryCount(Expression> lamdaExpression)
        {
            return dbContext.Set().Where(lamdaExpression).Count();
        }
    }
}

  • 添加EF 6.x DbContext 生成器
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第11张图片
  • 修改 Model1.Context.tt 文件为:
<#@ template language="C#" debug="false" hostspecific="true"#>
<#@ include file="EF.Utility.CS.ttinclude"#><#@
 output extension=".cs"#>
 
<#

CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
MetadataTools ef = new MetadataTools(this);

string inputFile = @"..\\WangQi.EntityFramework.Model\Model1.edmx";    //右键复制实体层Model1.edmx 文件

EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
string namespaceName = code.VsNamespaceSuggestion();

EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);

#>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WangQi.EntityFramework.DAL;
 
namespace WangQi.EntityFramework.DAL
{
   
<#
foreach (EntityType entity in ItemCollection.GetItems().OrderBy(e => e.Name))
{
#>
	 public partial class <#=entity.Name#>Repository : BaseRepository<<#=entity.Name#>,WangQiEntities>
     {
		
     }	
<#}#>
	
}

六.业务逻辑层

  • 添加类:BaseSerivces
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using WangQi.EntityFramework.DAL;
using WangQi.EntityFramework.Model;

namespace WangQi.EntityFramework.BLL
{
    public class BaseSerivces where T : class, new()
    {
        public BaseRepository baseRepository = new BaseRepository();

        /// 
        /// 通用单表添加方法
        /// 
        /// 
        /// 
        public bool Add(T entity)
        {
            return baseRepository.Add(entity);
        }
        /// 
        /// 通用单表删除方法
        /// 
        /// 
        /// 
        public bool Delete(T entity)
        {
            return baseRepository.Delete(entity);
        }
        /// 
        /// 通用单表批量删除,通过对象集合
        /// 
        /// 
        /// 
        public bool Delete(List entityList)
        {
            return baseRepository.Delete(entityList);
        }
        /// 
        /// 通用单表批量删除,通过id集合
        /// 
        /// 
        /// 
        public bool Delete(List ids)
        {
            return baseRepository.Delete(ids);
        }
        /// 
        /// 通用单表修改方法
        /// 
        /// 
        /// 
        public bool Update(T entity)
        {
            return baseRepository.Update(entity);
        }
        /// 
        /// 返回一个数据集合
        /// 
        /// 
        public List QueryList(Expression> lamdaExpression)
        {
            return baseRepository.QueryList(lamdaExpression);
        }
        /// 
        /// 返回单个对象
        /// 
        /// 
        /// 
        public T Query(Expression> lamdaExpression)
        {
            return baseRepository.Query(lamdaExpression);
        }
        /// 
        /// 判断对象是否存在
        /// 
        /// 
        /// 
        public bool Exist(Expression> lamdaExpression)
        {
            return baseRepository.Exist(lamdaExpression);
        }
        /// 
        /// 分页查询
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        /// 
        public List QueryPageList(int pageIndex, int pageSize, Expression> lamdaExpression, Expression> orderBy, out int count, bool isAcs = true)
        {
            return baseRepository.QueryPageList(pageIndex, pageSize, lamdaExpression, orderBy, out count);
        }
        /// 
        /// 返回总记录数
        /// 
        /// 
        /// 
        public int QueryCount(Expression> lamdaExpression)
        {
            return baseRepository.QueryCount(lamdaExpression);
        }
    }
}

  • 添加类:AdminInfoService
    ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码_第12张图片

七.登陆页面

  • js代码

八.控制器

  • 登陆方法
/// 
        /// 登陆
        /// 
        /// 
        /// 
        public JsonResult Login(AdminInfo adminInfo,bool checkbox)
        {
            opercte.Success = _adminInfoService.Exist(a => a.AdminName == adminInfo.AdminName && a.AdminPassWord == adminInfo.AdminPassWord);
           
            if (opercte.Success)
            {
                if (opercte.Success)
                {
                    UserContext.context.user = adminInfo;
                }
                if (checkbox)
                {
                    //Cookie
                    HttpCookie cookie = new HttpCookie("key");  //创建Cookie   ("随便取名")
                    cookie["key"] = adminInfo.AdminName;
                    cookie.Expires = DateTime.Now.AddDays(1);   //设置Cookie时间为1天
                    System.Web.HttpContext.Current.Response.Cookies.Add(cookie);    //添加Cookie到浏览器
                }
            }
            
            return Json(opercte);
        }

你可能感兴趣的:(ASP.NET使用EntityFramework框架搭建项目,实现登陆到首页、记住密码)