首页 > 其他分享 >.NET入门相关学习

.NET入门相关学习

时间:2023-05-18 10:44:51浏览次数:31  
标签:model 入门 builder app 学习 using NET public 类名

关于.NET连接Mysql:


 

目前还存在问题:这个教程是关于导出数据库表所有内容的,如何添加删改数据这个教程没写。回头有空补上。

两个开发工具:

MySQL workbench:

①新建数据库连接:

行为:主页下半部分MysqlConnect点击加号,出现窗口即可编辑
要点:连接名、主机名、端口、用户、密码

②新建数据库和表:

行为:
  创建数据库连接口主页MysqlConnect下会出现卡片,点击进入
  点击上方菜单栏的带加号的桶图标;
  创建数据库后,左边Navigator下侧点击Schemas找到创建好的数据库
  点其下一级Tables鼠标右键create schema建表 要点: 数据库名、表名

VisualStudio2022:

1、新建ASP.NET Core MVC项目(ASP.NET Core MVC Web应用(模型-视图-控制器))

 

 

2、在项目下appsetting.json中如下代码:“

"Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },

”之前,添加连接字符串:

"ConnectionStrings": {
    "MysqlConnection": "Data Source=主机名或者域名;Database=数据库名;User ID=用户名;Password=密码;pooling=true;port=端口号;sslmode=none;CharSet=utf8;" 
  },
//中文字自行替换

最终显示为:

 1 {
 2     "ConnectionStrings": {
 3         "MysqlConnection": "Data Source=localhost;Database=csharp_demo;User ID=root;Password=161618;pooling=true;port=3306;sslmode=none;CharSet=utf8;"
 4     },
 5     "Logging": {
 6         "LogLevel": {
 7             "Default": "Information",
 8             "Microsoft.AspNetCore": "Warning"
 9         }
10     },
11     "AllowedHosts": "*"
12 }
appsetting.json

 

3、在项目下Program.cs中开头添加:

using Microsoft.EntityFrameworkCore;
using MySQL_Connect_Demo.Data;

添加完后,在原本就有的语句:“

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllersWithViews();

”之后添加以下:

builder.Services.AddDbContext<StudentContext>(options =>
  options.UseMySql(builder.Configuration.GetConnectionString("MysqlConnection"), new MySqlServerVersion(new Version())));

用于注册数据库上下文服务。

  • StudentContext字段报错不用管,后面还会写文件;
  • UseMysql等字段(错误提示是否缺少引用的)有两种解决方案:

(1)菜单栏-“工具”-“Nuget包管理器”-“管理解决方案的Nuget程序包”-“浏览”:

  之后在搜索栏中搜索到结果,点击所需包,在右侧选中当前项目,添加。

(2)鼠标悬停在错误字段上等待提示,出现提示后点击最下方寻求解决方案直接由系统导入包(不确定会不会导错,但是我这么做没导错包。)

最终显示为:

 1 using Microsoft.EntityFrameworkCore;
 2 using MySQL_Connect_Demo.Data;
 3 
 4 var builder = WebApplication.CreateBuilder(args);
 5 
 6 builder.Services.AddControllersWithViews();
 7 builder.Services.AddDbContext<StudentContext>(options =>
 8   options.UseMySql(builder.Configuration.GetConnectionString("MysqlConnection"), new MySqlServerVersion(new Version())));
 9 
10 var app = builder.Build();
11 
12 // Configure the HTTP request pipeline.
13 if (!app.Environment.IsDevelopment())
14 {
15     app.UseExceptionHandler("/Home/Error");
16     // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
17     app.UseHsts();
18 }
19 
20 app.UseHttpsRedirection();
21 app.UseStaticFiles();
22 
23 app.UseRouting();
24 
25 app.UseAuthorization();
26 
27 app.MapControllerRoute(
28     name: "default",
29     pattern: "{controller=Home}/{action=Index}/{id?}");
30 
31 app.Run();
Program.cs

 

3、工程项目下的Models文件夹右键选择:添加-类,注意改名称并记住,最好和数据库建表一致并开头大写,容易记。

using System.ComponentModel.DataAnnotations;
namespace 项目名.Models
{
    public class 类名
    {
        [Key]
        public int Id { get; set; }
        public string Name { get; set; } = String.Empty;
        public string Age { get; set; }
    }
    //Id为关键字
    //可能会弹属性不能为空的警告,可以不管,也可以在后面加=xxx.Empty
}

 

4、工程项目,右键-添加-文件夹,命名为Data,右键Data添加类:类名Context.cs

using Microsoft.EntityFrameworkCore;
using 项目名.Models;
//中文字自行替换
namespace 项目名.Data {
    public class 类名Context : DbContext {
        public 类名Context(DbContextOptions<类名Context> options) : base(options){}
        public DbSet<类名> 类名s { get; set; }
        //定义一个集合,名称可以是类名+'s',也可以自己取一个但要记住。
        protected override void OnModelCreating(ModelBuilder modelBuilder){
            modelBuilder.Entity<类名>().ToTable("所建表的表名");
        }
        //据说是用于对数据库表单的映射
    }
}

 

5、在项目下Controllers中右键添加类:类名Controller.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using 项目名.Data;

namespace 项目名.Controllers{
    public class 类名Controller : Controller{
        private readonly 类名Context _context;
        public 类名Controller(类名Context context){
            _context = context;
        }
        public async Task<IActionResult> Index(){
            return View(await _context.类名s.ToListAsync());
        }
    }
}

 

6、在项目下Views右键添加文件夹,文件夹命可设置为类名,右键文件夹添加视图(空):Index.cshtml

 1 @model IEnumerable<项目名.Models.类名>
 2 
 3 @{
 4     ViewData["Title"] = "Index";
 5 }
 6 
 7 <h2>Index</h2>
 8 
 9 <p>
10     <a asp-action="Create">Create New</a>
11     @*此处暂无跳转功能*@
12 </p>
13 <table class="table">
14     <thead>
15     @*表头设置*@
16         <tr>
17                 <th>
18                     @Html.DisplayNameFor(model => model.Id)
19                 </th>
20                 <th>
21                     @Html.DisplayNameFor(model => model.Name)
22                 </th>
23                 <th>
24                     @Html.DisplayNameFor(model => model.Age)
25                 </th>
26             <th></th>
27         </tr>
28     </thead>
29     <tbody>
30 @foreach (var item in Model) {
31     @*表单显示*@
32         <tr>
33             <td>
34                 @Html.DisplayFor(modelItem => item.Id)
35             </td>
36             <td>
37                 @Html.DisplayFor(modelItem => item.Name)
38             </td>
39             <td>
40                 @Html.DisplayFor(modelItem => item.Age)
41             </td>
42             <td>
43                 <a asp-action="Edit" asp-route-id="@item.Id">Edit</a> |
44                 <a asp-action="Details" asp-route-id="@item.Id">Details</a> |
45                 <a asp-action="Delete" asp-route-id="@item.Id">Delete</a>
46             </td>
47     @*以上三个td暂无跳转功能*@
48         </tr>
49 }
50     </tbody>
51 </table>
Index.cshtml

主要需要以下几行:

@model IEnumerable<项目名.Models.类名>
<table class="table">
@*表头*@
    <thead>
        <tr>
            <th>@Html.DisplayNameFor(model => model.属性名)</th>
            <th>......</th>......
        </tr>
    </thead>
@*表单*@
    <tbody>
        @foreach (var item in Model){
            <tr>
                <td>@Html.DisplayFor(modelItem => item.属性名)</td>
                <td>......</td>......
            </tr>
        }
    </tbody>
</table>

 

7、到此为止,ctrl+F5仍然看不到页面,因此要在主页设置一个入口进入数据查看界面,或者直接设置这个界面为主页。

设置前运行界面为

 设置后界面为

 
在主页菜单栏设置入口的步骤:

在项目下Shared文件夹下_Layout.cshtml中,以下代码之后:

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>

插入代码:

<li class="nav-item">
    <a class="nav-link text-dark" asp-area="" asp-controller="类名" asp-action="Index">菜单栏自取标题名</a>
</li>

整个文件改后如下所示:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="utf-8" />
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 6     <title>@ViewData["Title"] - Test_Mysql_Demo</title>
 7     <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
 8     <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
 9     <link rel="stylesheet" href="~/Test_Mysql_Demo.styles.css" asp-append-version="true" />
10 </head>
11 <body>
12     <header>
13         <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
14             <div class="container-fluid">
15                 <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">Test_Mysql_Demo</a>
16                 <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
17                         aria-expanded="false" aria-label="Toggle navigation">
18                     <span class="navbar-toggler-icon"></span>
19                 </button>
20                 <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
21                     <ul class="navbar-nav flex-grow-1">
22                         <li class="nav-item">
23                             <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
24                         </li>
25                         <li class="nav-item">
26                             <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
27                         </li>
28                         <li class="nav-item">
29                             <a class="nav-link text-dark" asp-area="" asp-controller="Student" asp-action="Index">Test_SqlConnection</a>
30                         </li>
31                         <li class="nav-item">
32                             <a class="nav-link text-dark" asp-area="" asp-controller="Student" asp-action="Login">Test_Login_page</a>
33                         </li>
34                         @*另外加了个Test_Login_page标题,点击也是跳转到Index界面*@
35                     </ul>
36                 </div>
37             </div>
38         </nav>
39     </header>
40     <div class="container">
41         <main role="main" class="pb-3">
42             @RenderBody()
43         </main>
44     </div>
45 
46     <footer class="border-top footer text-muted">
47         <div class="container">
48             &copy; 2023 - Test_Mysql_Demo - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
49         </div>
50     </footer>
51     <script src="~/lib/jquery/dist/jquery.min.js"></script>
52     <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
53     <script src="~/js/site.js" asp-append-version="true"></script>
54     @await RenderSectionAsync("Scripts", required: false)
55 </body>
56 </html>
_Layout.cshtml

 

最终运行结果和教程一致:

 

 

原教程连接:https://blog.csdn.net/qq_44887733/article/details/126317701

关于Mysql的安装:本人直接在官网下下载安装向导,由向导指示安装。和网上大部分教程的不同处在于文件my.ini是隐藏状态的,必须要显示隐藏文件同时地址栏url输入%ProgramData%,然后进入MYSQL Server 版本号目录下才能看到。还有一个问题是Mysql汉化不成功,Edit-preference-Appearance设置Simplified Chinese重启也没用。因为向导直接安装最新版,网上汉化包不兼容,英文版将就。

标签:model,入门,builder,app,学习,using,NET,public,类名
From: https://www.cnblogs.com/yyn20230517/p/17410887.html

相关文章

  • python基础学习-发送邮件
    importsmtplibfromemail.headerimportHeaderfromemail.mime.multipartimportMIMEMultipartfromemail.mime.textimportMIMEText"""发送普通邮件"""#创建邮件主体对象email=MIMEMultipart()#设置发件人、收件人和主题email['From']=&#......
  • web自动化测试入门篇04——selenium+python基础方法封装
      ......
  • 从桌面端到移动端,.NET MAUI为什么对WPF开发人员更简单?
    .NET多平台应用程序UI(.NETMAUI)的市场吸引力与日俱增,这是微软最新的开发平台,允许开发者使用单个代码库创建跨平台应用程序。尽管很多WPF开发人员还没有跟上.NETMAUI的潮流,但我们将在这篇文章中为大家展示他的潜力,具体来说想描述一下WPF和.NETMAUI之前的共性。PS:DevExpressWP......
  • asp.net web应用程序,如果配置数据设置在 Web. config,每次修改配置项的值,都需要重启应
    问题:asp.netweb应用程序,如果配置数据设置在Web.config,每次修改配置项的值,都需要重启应用才能生效,怎么优化? 对于ASP.netweb应用程序,如果配置数据设置在Web.config,每次修改配置项的值,都需要重启应用才能生效。有没有更好的方法来配置应用程序所需的数据?解决每次修改配置......
  • vb.net 实现excel导入的时候滚动显示导入的数据
     如果你想在Excel导入过程中滚动显示导入的数据,可以使用逐行读取Excel数据并在滚动窗口中显示。在VB.NET中,你可以使用Excel.Range对象逐行读取Excel数据,并将每行数据添加到滚动窗口(如ListBox或TextBox)中进行显示。以下是一个示例代码,展示如何实现逐行滚动显示Exc......
  • 依赖注入 (DI) 是.NET中一个非常重要的软件设计模式,它可以帮助我们更好地管理和组织组
    依赖注入(DI)是.NET中一个非常重要的软件设计模式,它可以帮助我们更好地管理和组织组件,提高代码的可读性,扩展性和可测试性。在日常工作中,我们一定遇见过这些问题或者疑惑。Singleton服务为什么不能依赖Scoped服务?多个构造函数的选择机制?源码是如何识别循环依赖的?虽然我们可......
  • 原来.NET写的Linux桌面这么好看?
    如何使用Blazor在Linux平台下运行Desktop程序本文将讲解如何使用Blazor运行跨平台应用,应用到的技术有以下几点BlazorMasaBlazorPhotino.BlazorUbuntu用于验证跨平台性,并且是否提高开发效率,Blazor和Photino一块使用的技术称为BlazorHybrid,Blazor的优点Blazor是一种使用......
  • 【安全学习之路】Day2
    ......
  • 【愚公系列】2023年05月 .NET CORE工具案例-对象映射Master的使用
    (文章目录)前言对象映射框架Master可以帮助开发人员将对象映射到数据库,以进行数据持久化。它还可以支持ORM(对象关系映射),以及其他数据库技术,比如存储过程。它可以帮助开发人员更快、更有效地完成数据库操作。Master官网:https://github.com/MapsterMapper/Mapster一、对象映射m......
  • AI 0基础学习,名词解析
    AI学习过程中,常见的名词解析损失函数(lossfunction)数据集中所有样本的损失均值,能够量化目标的实际值与预测值之间的差距,最小化损失是模型的优化目标,实现损失最小化的方法称为优化算法,也称为寻解算法多项分布(multinomialdistribution)贝叶斯定理(Bayes’theorem)方差标准差的......