首页 技术 正文
技术 2022年11月12日
0 收藏 306 点赞 4,839 浏览 17682 个字

本节将介绍如何进行业务项目搭建。

本业务项目示例是简单的企业信息管理功能,业务项目采用Code First方式,搭建包括:

  1. 创建实体项目
  2. 创建实体数据表映射
  3. 创建业务处理项目
  4. 创建业务Web项目

搭建完项目效果:

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

1、创建实体项目-ShiQuan.Company.Entity

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

创建企业信息实体

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

示例中企业信息包括:编号、名称、负责人、联系人、联系电话、联系地址等

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ShiQuan.Company.Entity
{
/// <summary>
/// 企业信息
/// </summary>
public class CompanyInfoEntity:BasicCompanyEntity
{
/// <summary>
/// 编号
/// </summary>
[Display(Name = "编号"), MaxLength()]
public string Code { get; set; }
/// <summary>
/// 编号
/// </summary>
[Display(Name = "编号"), MaxLength()]
public string Name { get; set; }
/// <summary>
/// 负责人
/// </summary>
[Display(Name = "负责人"), MaxLength()]
public string Leader { get; set; }
/// <summary>
/// 联系人
/// </summary>
[Display(Name = "联系人"), MaxLength()]
public string Linkman { get; set; }
/// <summary>
/// 联系电话
/// </summary>
[Display(Name = "联系电话"), MaxLength()]
public string Phone { get; set; }
/// <summary>
/// 联系地址
/// </summary>
[Display(Name = "联系地址"), MaxLength()]
public string Address { get; set; }
/// <summary>
/// 备注说明
/// </summary>
[Display(Name = "备注说明"), MaxLength()]
public string Remark { get; set; }
}
}

2、创建实体数据表映射项目-ShiQuan.Company.Mapping

创建空数据库

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

创建项目

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

创建企业信息数据表映射

using ShiQuan.Company.Entity;
using System;
using System.Collections.Generic;
using System.Data.Entity.ModelConfiguration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ShiQuan.Company.Mapping
{
/// <summary>
/// 实体数据映射
/// </summary>
public class CompanyInfoMap : EntityTypeConfiguration<CompanyInfoEntity>
{
public CompanyInfoMap()
{
#region 表、主键
//表
this.ToTable("CompanyInfo");
//主键
this.HasKey(t => t.Id);
#endregion #region 配置关系
#endregion
}
}
}

创建实体数据库上下文

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

选择空Code First 模型

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

namespace ShiQuan.Company.Mapping
{
using System;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration.Conventions;
using System.Linq; public class CompanyDbContext : DbContext
{
//您的上下文已配置为从您的应用程序的配置文件(App.config 或 Web.config)
//使用“CompanyDbContext”连接字符串。默认情况下,此连接字符串针对您的 LocalDb 实例上的
//“ShiQuan.Company.Mapping.CompanyDbContext”数据库。
//
//如果您想要针对其他数据库和/或数据库提供程序,请在应用程序配置文件中修改“CompanyDbContext”
//连接字符串。
public CompanyDbContext()
: base("name=CompanyDbContext")
{
} //为您要在模型中包含的每种实体类型都添加 DbSet。有关配置和使用 Code First 模型
//的详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=390109。 // public virtual DbSet<MyEntity> MyEntities { get; set; }
/// <summary>
/// 重写数据型号创建,添加企业信息数据表映射
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); modelBuilder.Configurations.Add(new CompanyInfoMap()); base.OnModelCreating(modelBuilder);
}
}
}

配置数据库连接

  <connectionStrings>
<add name="CompanyDbContext" connectionString="Server=127.0.0.1;Initial Catalog=VSD_CompanyDB;User ID=sa;Password=123456*a" providerName="System.Data.SqlClient" />
</connectionStrings>

配置数据库上下文允许进行更新升级

using System;
using System.Collections.Generic;
using System.Data.Entity.Migrations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ShiQuan.Company.Mapping.Migrations
{
internal sealed class Configuration : DbMigrationsConfiguration<CompanyDbContext>
{
public Configuration()
{
//配置允许数据库更新升级
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
} protected override void Seed(CompanyDbContext dbContext)
{ }
}
}

使用update-database 对数据库进行升级更新

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

3、创建企业信息管理业务处理项目-ShiQuan.Company.Business

创建企业信息库业务处理基础类,实现实体查询、删除和保存功能。

using Learun.DataBase.Repository;
using Learun.Util;
using ShiQuan.Company.Entity;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;namespace ShiQuan.Company.Business
{
/// <summary>
/// 企业信息管理库业务处理基础类
/// </summary>
/// <typeparam name="T"></typeparam>
public class BasicCompanyBLL<T> : RepositoryFactory<T> where T : class,new()
{
protected string dbConn = ""; /// <summary>
/// 构造函数
/// </summary>
public BasicCompanyBLL()
{
//this.dbConn = ConfigurationManager.ConnectionStrings["CompanyDbContext"].ConnectionString;
this.dbConn = "CompanyDbContext";
}
#region 获取数据
/// <summary>
/// 获取列表
/// </summary>
/// <param name="pagination">分页</param>
/// <param name="queryJson">查询参数</param>
/// <returns>返回分页列表</returns>
public virtual IEnumerable<T> GetPageList(Pagination pagination, string queryJson)
{
var expression = LinqExtensions.True<T>();
expression = QueryStringToExpression(expression, queryJson);
return this.BaseRepository(dbConn).FindList(expression, pagination);
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="pagination">分页</param>
/// <param name="queryJson">查询参数</param>
/// <returns>返回分页列表</returns>
public virtual IEnumerable<T> GetPageList(Pagination pagination, Expression<Func<T, bool>> linq)
{
return this.BaseRepository(dbConn).FindList(linq, pagination);
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="queryJson">查询参数</param>
/// <returns>返回列表</returns>
public virtual IEnumerable<T> GetList(string queryJson)
{
var expression = LinqExtensions.True<T>();
expression = QueryStringToExpression(expression, queryJson);
return this.BaseRepository(dbConn).IQueryable(expression);
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="queryJson">查询参数</param>
/// <returns>返回列表</returns>
public virtual IQueryable<T> GetList(Expression<Func<T, bool>> linq)
{
return this.BaseRepository(dbConn).IQueryable(linq);
}
/// <summary>
/// 获取实体
/// </summary>
/// <param name="keyValue">主键值</param>
/// <returns></returns>
public virtual T GetEntity(string keyValue)
{
return this.BaseRepository(dbConn).FindEntity(keyValue);
} /// <summary>
/// 根据条件获取实体
/// </summary>
/// <param name="linq">Linq条件</param>
/// <returns></returns>
public virtual T FindEntity(Expression<Func<T, bool>> linq)
{
return this.BaseRepository(dbConn).FindEntity(linq);
}
/// <summary>
/// 获取数据
/// </summary>
/// <param name="queryJson"></param>
/// <returns></returns>
public virtual DataTable GetTable(string queryJson)
{
string sql = GetSQL(queryJson);
return this.BaseRepository(dbConn).FindTable(sql);
}
/// <summary>
/// 获取数据
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public virtual DataTable GetTableBySql(string sql)
{
//string sql = GetSQL(queryJson);
return this.BaseRepository(dbConn).FindTable(sql);
}
/// <summary>
/// 获取分页列表,返回Datatable
/// </summary>
/// <param name="queryJson">查询参数</param>
/// <returns>返回列表</returns>
public virtual DataTable GetPageTable(Pagination pagination, string queryJson)
{
string sql = GetSQL(queryJson);
return this.BaseRepository(dbConn).FindTable(sql, pagination);
}
/// <summary>
/// 获取分页列表,返回Datatable
/// </summary>
/// <param name="sql">查询参数</param>
/// <returns>返回列表</returns>
public virtual DataTable GetPageTableBySql(Pagination pagination, string sql)
{
//string sql = GetSQL(queryJson);
return this.BaseRepository(dbConn).FindTable(sql, pagination);
}
#endregion #region 提交数据
/// <summary>
/// 删除数据
/// </summary>
/// <param name="keyValue">主键</param>
public virtual void RemoveForm(string keyValue)
{
string[] dels = keyValue.Split(',');
if (dels.Length > )
{
IRepository db = new RepositoryFactory().BaseRepository(dbConn).BeginTrans();
try
{
foreach (var item in dels)
{
db.Delete(item);
}
db.Commit();
}
catch (Exception)
{
db.Rollback();
throw;
}
}
else
{
this.BaseRepository(dbConn).Delete(keyValue);
}
}
/// <summary>
/// 保存表单(新增、修改)
/// </summary>
/// <param name="keyValue">主键值</param>
/// <param name="entity">实体对象</param>
/// <returns></returns>
public virtual void SaveForm(string keyValue, T entity)
{
if (!string.IsNullOrEmpty(keyValue))
{
this.BaseRepository(dbConn).Update(entity);
}
else
{
this.BaseRepository(dbConn).Insert(entity);
}
}
#endregion #region 帮助函数
/// <summary>
/// 生成查询表达式
/// </summary>
/// <param name="queryJson">查询对象</param>
/// <returns></returns>
protected virtual Expression<Func<T, bool>> QueryStringToExpression(Expression<Func<T, bool>> expression, string queryJson)
{
if (string.IsNullOrEmpty(queryJson))
return expression;
var queryParam = queryJson.ToJObject();
if (!queryParam["condition"].IsEmpty() && !queryParam["keyword"].IsEmpty())
{
string condition = queryParam["condition"].ToString();
string keyword = queryParam["keyword"].ToString();
switch (condition)
{
default: break;
}
}
return expression;
}
/// <summary>
/// 根据实体生成SQL
/// </summary>
/// <param name="queryJson">查询对象</param>
/// <returns></returns>
protected virtual string GetSQL(string queryJson)
{
StringBuilder sb = new StringBuilder();
var queryParam = queryJson.ToJObject();
if (!queryParam["condition"].IsEmpty() && !queryParam["keyword"].IsEmpty())
{
string condition = queryParam["condition"].ToString();
string keyword = queryParam["keyword"].ToString();
sb.Append(" AND " + condition + " like '%" + keyword + "%'");
}
return sb.ToString();
}
#endregion
}
}

创建企业信息业务处理类,继承基础业务处理类,重写保存、过滤条件方法。

using ShiQuan.Company.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Linq.Expressions;
using Learun.Util;
using Learun.Util.Operat;namespace ShiQuan.Company.Business
{
/// <summary>
/// 实现企业信息管理业务处理,继承企业信息库基础业务处理
/// </summary>
public class CompanyInfoBLL : BasicCompanyBLL<CompanyInfoEntity>
{
/// <summary>
/// 数据保存
/// </summary>
/// <param name="keyValue"></param>
/// <param name="entity"></param>
public override void SaveForm(string keyValue, CompanyInfoEntity entity)
{
try
{
if (string.IsNullOrEmpty(keyValue))
{
entity.Id = Guid.NewGuid().ToString();
}
else
entity.Id = keyValue; base.SaveForm(keyValue, entity);
}
catch (Exception ex)
{ throw;
}
}
/// <summary>
/// 重写查询过滤条件
/// </summary>
/// <param name="expression"></param>
/// <param name="queryJson"></param>
/// <returns></returns>
protected override Expression<Func<CompanyInfoEntity, bool>> QueryStringToExpression(Expression<Func<CompanyInfoEntity, bool>> expression, string queryJson)
{
if (string.IsNullOrEmpty(queryJson))
return expression;
var queryParam = queryJson.ToJObject();
if (queryParam["Code"].IsEmpty() == false)
{
string keyword = queryParam["Code"].ToString();
expression = expression.And(my => my.Code == keyword);
}
if (!queryParam["condition"].IsEmpty() && !queryParam["keyword"].IsEmpty())
{
string condition = queryParam["condition"].ToString();
string keyword = queryParam["keyword"].ToString();
switch (condition)
{
default: break;
}
}
return expression;
}
}
}

4、创建企业信息管理Web项目-ShiQuan.Company.Web

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

创建空的企业信息管理控制器,实现列表、编辑视图,数据查询、删除、保存方法。

using Learun.Application.Web;
using Learun.Util;
using ShiQuan.Company.Business;
using ShiQuan.Company.Entity;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;namespace ShiQuan.Company.Web.Areas.CompanyManage.Controllers
{
/// <summary>
/// 企业信息管理
/// </summary>
public class CompanyInfoController : MvcControllerBase
{
// GET: CompanyManage/CompanyInfo
CompanyInfoBLL service = new CompanyInfoBLL();
/// <summary>
/// 列表视图
/// </summary>
/// <returns></returns>
public ActionResult CompanyInfoIndex()
{
return View();
}
/// <summary>
/// 编辑视图
/// </summary>
/// <returns></returns>
public ActionResult CompanyInfoForm()
{
return View();
} #region 获取数据
/// <summary>
/// 获取列表
/// </summary>
/// <param name="pagination">分页参数</param>
/// <param name="queryJson">查询参数</param>
/// <returns>返回分页列表Json</returns>
[HttpGet]
public ActionResult GetPageListJson(string pagination, string queryJson)
{
Pagination paginationobj = pagination.ToObject<Pagination>();
var watch = CommonHelper.TimerStart();
var data = service.GetPageList(paginationobj, queryJson);
var jsonData = new
{
rows = data,
total = paginationobj.total,
page = paginationobj.page,
records = paginationobj.records,
costtime = CommonHelper.TimerEnd(watch)
};
//return ToJsonResult(jsonData);
return Success(jsonData);
}
/// <summary>
/// 获取列表
/// </summary>
/// <param name="queryJson">查询参数</param>
/// <returns>返回列表Json</returns>
[HttpGet]
public ActionResult GetListJson(string queryJson)
{
var data = service.GetList(queryJson);
return ToJsonResult(data);
}
/// <summary>
/// 获取实体
/// </summary>
/// <param name="keyValue">主键值</param>
/// <returns>返回对象Json</returns>
[HttpGet]
public ActionResult GetFormJson(string keyValue)
{
var data = service.GetEntity(keyValue);
return ToJsonResult(data);
}
#endregion #region 提交数据
/// <summary>
/// 删除数据
/// </summary>
/// <param name="keyValue">主键值</param>
/// <returns></returns>
[HttpPost]
[ValidateAntiForgeryToken]
[AjaxOnly]
public ActionResult RemoveForm(string keyValue)
{
service.RemoveForm(keyValue);
return Success("删除成功。");
}
/// <summary>
/// 保存表单(新增、修改)
/// </summary>
/// <param name="keyValue">主键值</param>
/// <param name="entity">实体对象</param>
/// <returns></returns>
[HttpPost]
[ValidateAntiForgeryToken]
[AjaxOnly]
public ActionResult SaveForm(string keyValue, CompanyInfoEntity entity)
{
service.SaveForm(keyValue, entity);
return Success("操作成功。", entity);
}
#endregion
}
}

创建列表界面

@{
ViewBag.Title = "客户管理";
Layout = "~/Views/Shared/_Index.cshtml";
}
<div class="lr-layout">
<div class="lr-layout-center">
<div class="lr-layout-wrap lr-layout-wrap-notitle">
<div class="lr-layout-tool">
<div class="lr-layout-tool-left">
<div class="lr-layout-tool-item">
<input id="txt_Keyword" type="text" class="form-control" placeholder="请输查询关键字" />
</div>
<div class="lr-layout-tool-item">
<a id="btn_Search" class="btn btn-primary btn-sm"><i class="fa fa-search"></i>&nbsp;<span class="lrlg">查询</span></a>
</div>
</div>
<div class="lr-layout-tool-right">
<div class="btn-group btn-group-sm">
<a id="btnReload" class="btn btn-default"><i class="fa fa-refresh"></i></a>
</div>
<div class="btn-group btn-group-sm" learun-authorize="yes">
<a id="btnAdd" class="btn btn-default"><i class="fa fa-plus"></i>&nbsp;<span class="lrlg">新增</span></a>
<a id="btnEdit" class="btn btn-default"><i class="fa fa-pencil-square-o"></i>&nbsp;<span class="lrlg">编辑</span></a>
<a id="btnDelete" class="btn btn-default"><i class="fa fa-trash-o"></i>&nbsp;<span class="lrlg">删除</span></a>
</div>
</div>
</div>
<div class="lr-layout-body" id="gridtable"></div>
</div>
</div>
</div>
<script type="text/javascript">
var refreshGirdData; // 更新数据
var selectedRow;
var bootstrap = function ($, learun) {
"use strict";
var page = {
init: function () {
page.initGrid();
page.bind();
},
bind: function () {
// 查询
$('#btn_Search').on('click', function () {
var keyword = $('#txt_Keyword').val();
page.search({ keyword: keyword });
});
// 刷新
$('#btnReload').on('click', function () {
location.reload();
});
// 新增
$('#btnAdd').on('click', function () {
selectedRow = null;//新增前请清空已选中行
learun.layerForm({
id: 'form',
title: '新增客户',
url: top.$.rootUrl + '/CompanyManage/CompanyInfo/CompanyInfoForm',
width: ,
height: ,
maxmin: true,
callBack: function (id) {
return top[id].acceptClick(refreshGirdData);
}
});
});
// 编辑
$('#btnEdit').on('click', function () {
selectedRow = $('#gridtable').jfGridGet('rowdata');
var keyValue = $('#gridtable').jfGridValue('Id');
if (learun.checkrow(keyValue)) {
learun.layerForm({
id: 'form',
title: '编辑客户',
url: top.$.rootUrl + '/CompanyManage/CompanyInfo/CompanyInfoForm',
width: ,
height: ,
maxmin: true,
callBack: function (id) {
return top[id].acceptClick(refreshGirdData);
}
});
}
});
// 删除
$('#btnDelete').on('click', function () {
var keyValue = $('#gridtable').jfGridValue('Id');
if (learun.checkrow(keyValue)) {
learun.layerConfirm('是否确认删除该项!', function (res) {
if (res) {
learun.deleteForm(top.$.rootUrl + '/CompanyManage/CompanyInfo/DeleteForm', { keyValue: keyValue }, function () {
refreshGirdData();
});
}
});
}
});
},
initGrid: function () {
$('#gridtable').jfGrid({
url: top.$.rootUrl + '/CompanyManage/CompanyInfo/GetPageListJson',
headData: [
{ label: '编号', name: 'Code', width: , align: 'left' },
{ label: '名称', name: 'Name', width: , align: 'left' },
{ label: '负责人', name: 'Leader', width: , align: 'left' },
{ label: '联系人', name: 'Linkman', width: , align: 'left' },
{ label: '联系电话', name: 'Phone', width: , align: 'left' },
{ label: '联系地址', name: 'Address', width: , align: 'left' },
{
label: "最后更新", name: "ModifyDate", width: , align: "left",
formatter: function (cellvalue) {
return learun.formatDate(cellvalue, 'yyyy-MM-dd hh:mm');
}
},
{ label: '备注', name: 'Remark', width: , align: 'left' },
],
mainId: 'Id',
reloadSelected: true,
isPage: true,
sidx: 'Code'
});
page.search();
},
search: function (param) {
$('#gridtable').jfGridSet('reload', param);
}
};
// 保存数据后回调刷新
refreshGirdData = function () {
page.search();
}
page.init();
}
</script>

创建编辑界面

@{
ViewBag.Title = "客户添加";
Layout = "~/Views/Shared/_Form.cshtml";
}
<div class="lr-form-wrap" id="form">
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">编号<font face="宋体">*</font></div>
<input id="Code" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
</div>
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">名称<font face="宋体">*</font></div>
<input id="Name" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
</div>
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">负责人<font face="宋体">*</font></div>
<input id="Leader" type="text" class="form-control" isvalid="yes" checkexpession="NotNull" />
</div>
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">联系人</div>
<input id="Linkman" type="text" class="form-control" isvalid="no" checkexpession="NotNull" />
</div>
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">联系电话</div>
<input id="Phone" type="text" class="form-control" />
</div>
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">联系地址</div>
<input id="Address" type="text" class="form-control" />
</div>
<div class="col-xs-12 lr-form-item">
<div class="lr-form-item-title">备注</div>
<textarea id="Remark" class="form-control" style="height: 50px;"></textarea>
</div>
</div>
<script type="text/javascript">
var acceptClick;
var keyValue = '';
var bootstrap = function ($, learun) {
"use strict";
var selectedRow = learun.frameTab.currentIframe().selectedRow;
var page = {
init: function () {
page.bind();
page.initData();
},
bind: function () {
// 客户级别
//$('#F_CustLevelId').lrDataItemSelect({ code: 'Client_Level', maxHeight: 230 });
//// 客户类别
//$('#F_CustTypeId').lrDataItemSelect({ code: 'Client_Sort', maxHeight: 230 });
//// 客户程度
//$('#F_CustDegreeId').lrDataItemSelect({ code: 'Client_Degree', maxHeight: 230 });
////跟进人员
//$('#F_TraceUserId').lrformselect({
// layerUrl: top.$.rootUrl + '/LR_OrganizationModule/User/SelectForm',
// layerUrlW: 800,
// layerUrlH: 520,
// dataUrl: top.$.rootUrl + '/LR_OrganizationModule/User/GetListByUserIds'
//});
////公司行业
//$('#F_CustIndustryId').lrDataItemSelect({ code: 'Client_Trade', maxHeight: 230 });
},
initData: function () {
if (!!selectedRow) {
keyValue = selectedRow.Id;
$('#form').lrSetFormData(selectedRow);
}
}
};
// 保存数据
acceptClick = function (callBack) {
if (!$('#form').lrValidform()) {
return false;
}
var postData = $('#form').lrGetFormData(keyValue);
$.lrSaveForm(top.$.rootUrl + '/CompanyManage/CompanyInfo/SaveForm?keyValue=' + keyValue
, postData
, function (res) {
// 保存成功后才回调
if (!!callBack) {
callBack();
}
});
};
page.init();
}
</script>

业务项目,至此搭建完成,接下来,使用Web项目进行引用,

配置业务项目数据表映射

  <!-- 实体类映射库名称 -->
<add key="DataMapper" value="Learun.Application.Mapping.dll,ShiQuan.Company.Mapping.dll"/>

配置业务项目数据库连接,添加配置功能菜单

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

运行系统效果

基于.net EF6 MVC5+WEB Api 的Web系统框架总结(2)-业务项目搭建

更多精彩,且听下回分解!

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,955
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,479
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,291
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,108
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,740
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,774