前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.net Core 1.0.1 下的Web框架的的搭建过程step by step

.net Core 1.0.1 下的Web框架的的搭建过程step by step

作者头像
FreeTimeWorker
发布2020-08-31 15:16:49
4700
发布2020-08-31 15:16:49
举报
文章被收录于专栏:C#开发点点滴滴

环境:ubuntu+VScode 数据库:mysql ,ORM框架:chloe 官网

看完本篇文章你能学会 在Vscode下创建项目,一些基础的命令 ,以及得到一个配置文件的简单读取实例

1,在VScode下安装插件:C# 和 NuGet PackageManager

2,打开终端执行项目的创建:

代码语言:javascript
复制
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ mkdir Model
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ mkdir Bll
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ mkdir Web
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ cd Model
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2/Model$ dotnet new ClassLib
Content generation time: 30.2507 ms
The template "Class library" created successfully.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2/Model$ cd ../Bll
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2/Bll$ dotnet new ClassLib
Content generation time: 27.063 ms
The template "Class library" created successfully.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2/Bll$ cd ../Web
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2/Web$ dotnet new mvc
Content generation time: 317.1098 ms
The template "ASP.NET Core Web App" created successfully.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2/Web$ cd ../
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ dotnet new sln
Content generation time: 28.6445 ms
The template "Solution File" created successfully.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ dotnet sln test2.sln add Bll/Bll.csproj
Project `Bll/Bll.csproj` added to the solution.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ dotnet sln test2.sln add Model/Model.csproj
Project `Model/Model.csproj` added to the solution.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ dotnet sln test2.sln add Web/Web.csproj
Project `Web/Web.csproj` added to the solution.
siecan@siecan-Lenovo-H3050:~/dotnetproject/test2$ dotnet add Bll/Bll.csproj reference Model/Model.csproj

代码语言:javascript
复制
注:通过命令:dotnet sln test2.sln add Bll/Bll.csproj 将bll添加到解决方案 下同,
代码语言:javascript
复制
add Bll/Bll.csproj reference Model/Model.csproj 给Bll添加model的引用

修改Bll.csproj中 <TargetFramework>节点的值为:netcoreapp1.1

在新打开的vscode上单独打开bll 【相关的类库没有做类库的兼容导致的问题,后期可能就不需要这么麻烦在解决方案下就可以添加】 使用nuget方式给Bll添加引用 MySql.Data 和 ChloeCore.Mysql 和ChloeCore 操作方式:在VScode界面按F1 输入nuget 回车 输入 mysql 回车 选择mysql.data 回车,选择最新版本回车, ChloeCore.mysql同上

执行完毕后在bll.csproj中会多出如下内容: 也可以手动添加内容到Bll.csproj

代码语言:javascript
复制
 <ItemGroup>
    <PackageReference Include="MySql.Data" Version="7.0.7-m61"/>
    <PackageReference Include="ChloeCore.MySql" Version="2.5.0"/>
  </ItemGroup>

读取配置文件需要用到 Microsoft.Extensions.Configuration和Microsoft.Extensions.Configuration.Json 添加方式同上 nuget方式

当前Bll.csproj的内容如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Project Sdk="Microsoft.NET.Sdk">
   <ItemGroup>
    <ProjectReference Include="..\Model\Model.csproj" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="ChloeCore.MySql" Version="2.5.0" />
    <PackageReference Include="MySql.Data" Version="7.0.7-m61" /> 
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.1" />
  </ItemGroup>
  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>
</Project>

bll中添加数据上下文类:

DbContext:

代码语言:javascript
复制
using System.IO;
using Chloe.MySql;
using Microsoft.Extensions.Configuration;

namespace Bll
{
    public class DataContent
    {
        static MySqlContext ctx = null;
        public static MySqlContext Context()
        {
            if (DataContent.ctx == null)
            {
                IConfigurationRoot Configuration;
                ConfigurationBuilder Builder=new ConfigurationBuilder();
                Builder.SetBasePath(Directory.GetCurrentDirectory());
                Builder.AddJsonFile("appsettings.json");
                Configuration =Builder.Build();
                string ConnectionStr =Configuration.GetConnectionString("MySqlConnectionString");
                MySqlConnectionFactory factory = new MySqlConnectionFactory(ConnectionStr);
                DataContent.ctx = new MySqlContext(factory);
            }
            return DataContent.ctx;
        }
    }
}

MySqlConnectionFactory:参考 http://www.52chloe.com

代码语言:javascript
复制
using System;
using System.Data;
using Chloe;
using Chloe.MySql;
using MySql.Data.MySqlClient;
namespace Bll
{
    public class MySqlConnectionFactory : Chloe.Infrastructure.IDbConnectionFactory
    {
        string _connString = null;
        public MySqlConnectionFactory(string connString)
        {
            this._connString = connString;
        }
        public IDbConnection CreateConnection()
        {
            MySqlConnection conn = new MySqlConnection(this._connString);
            return conn;
        }
    }
}

测试类Person:

代码语言:javascript
复制
using System;
using System.Collections.Generic;

namespace Bll
{
    public class Person
    {
        public List<Model.Person> GetAllPerson()
        {
            return DataContent.Context().Query<Model.Person>().ToList();
        }
        public int AddPerson()
        {
            Random r=new Random(100);
            Model.Person p=new Model.Person(Guid.NewGuid().ToString(),r.Next(),Guid.NewGuid().ToString(),Guid.NewGuid().ToString());
            Model.Person presult = DataContent.Context().Insert<Model.Person>(p);
            return presult.id;
        }
        public int DelPerson(int id)
        {
            return DataContent.Context().Delete<Model.Person>((x)=>x.id==id);
        }
    }
}

Model中添加Person实体类:

代码语言:javascript
复制
namespace Model
{
    public class Person
    {
        public Person(string name,int age,string username,string password)
        {
            this.Name=name;
            this.Age=age;
            this.UserName=username;
            this.PassWord=password;
        }
        public Person(){}
        public int id {get;set;}
        public string Name{get;set;}
        public int Age{get;set;}
        public string UserName{get;set;}
        public string PassWord{get;set;}
    }
}

在Web文件夹中找到appsettings.json,添加数据库连接语句:

代码语言:javascript
复制
"ConnectionStrings":{
    "MySqlConnectionString":"Database=Test;Data Source=localhost;User Id=root;Password=123;pooling=false;CharSet=utf8;port=3306"
  }

appsettings.json最终结构如下:

代码语言:javascript
复制
{
  "Logging": {
    "IncludeScopes": false,
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "ConnectionStrings":{
    "MySqlConnectionString":"Database=Test;Data Source=localhost;User Id=root;Password=123;pooling=false;CharSet=utf8;port=3306"
  }
}

在homecontroller中 添加测试代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Bll;

namespace Web.Controllers
{
    public class HomeController : Controller
    {
        public IActionResult Index()
        {
            Bll.Person p= new Bll.Person();
            List<Model.Person> lst = p.GetAllPerson();
            ViewBag.lst=lst;
            return View();
        }
        [HttpPost]
        public int DelTestData(int id)
        {
             Bll.Person p=new Bll.Person();
             return p.DelPerson(id);
        }
        [HttpPost]
        public int AddTestData()
        {
            Bll.Person p=new Bll.Person();
             return p.AddPerson();
        }
        public IActionResult Error()
        {
            return View();
        }
    }
}

在添加视图前有个坑,.netcore项目在调试的时候看不到样式效果,使用F1->nuget也无法把所需要的css和javascript添加到项目中 ,无奈。 心情烦躁之际在终端写下 sudo apt-get install nuget。敲了个回车居然可以安装,暗爽了一把,等执行完毕以后,打开到web目录执行nuget install bootstrap 。奇迹发生了,需要的文件居然添加到项目中了。

然后把母版页中的那些引用改成自己的路径, 这里还有一坑 静态文件是不能放到根目录下的,不然会找不到,必须放到静态文件目录 默认是wwwroot目录,这时才能通过~/... 路径来定位到对应的CSS和javascript

来张项目结构图压压惊

视图:Index.cshtml

代码语言:javascript
复制
@{
    ViewData["Title"] = "Home Page";
}
<script type="text/javascript">
    $(document).ready(function(){
        $("#btnAddtest").click(function(){
            $.ajax({
                url:"AddTestData",
                data:{},
                type:"Post",
                success:function(obj){
                    if(obj>0){
                        location.reload();
                    }
                }
            }) ;
        });
        $("[Name='del']").click(function(){
            $.ajax({
                url:"DelTestData",
                data:{"Id":this.id},
                type:"Post",
                success:function(obj){
                    if(obj>0)
                    {
                        location.reload();
                    }
                }
            })
        });
    });
</script>
@using Model;
<button id="btnAddtest">添加测试数据</button>
用户列表:
<table class="table table-bordered table-hover">
    <tr>
        <th>名称</th>
        <th>年龄</th>
        <th>用户名</th>
        <th>密码</th>
        <th>操作</th>
    </tr>
@foreach(Person s in @ViewBag.lst as List<Person>)
{
    <tr>
        <td>@s.Name</td>
        <td>@s.Age</td>
        <td>@s.UserName</td>
        <td>@s.PassWord</td>
        <td>
        <button type="button" class="btn btn-large btn-block btn-default" name="del" id="@s.id">删除</button>
        </td>
    </tr>
}
</table>

前台写的非常简单,请打开完整路径查看效果 localhost:5000/Home/index

基本结束了,最后再附一张运行效果图

有问题请留言,欢迎讨论学习

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-03-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档