当前位置:Gxlcms > 数据库问题 > .net Core 自我学习随笔(三)——我们整个数据库如何?

.net Core 自我学习随笔(三)——我们整个数据库如何?

时间:2021-07-01 10:21:17 帮助过:30人阅读

: "1.1.0", "Microsoft.EntityFrameworkCore.Design": { "version": "1.1.0", "type": "build" }

如此修改后,我们就看到了在“引用”中多出了两个家伙:
技术分享

如果其它的数据库,比如 MySQL、Sqlite,其实,你就把“Microsoft.EntityFrameworkCore.SqlServer”里改成相应的Nuget,比如:“Microsoft.EntityFrameworkCore.Sqlite”、“MySQL.Data.Entities”。

2、我们要用于 First Code 实现的类。怎么做呢?方式是建立一个类来实现。我们先新建立一个文件夹叫“Model”,这样才有 MVC 的样子(><)!之后在里面建立一个类(class),名字叫“myDataBase”——我的数据库!

看准下图,别建错了!毕竟,.net Core 只识 .net Core,对 .net Framework 基本无视。
技术分享

结果应该如下:
技术分享

3、改 myDataBase.cs 中的代码
我们先看一下,myDataBase.cs 中的原始样子是什么样子,这样大家统一一下,不然姿势错了,直接再顺下去,八成要出奇葩了。
技术分享

好的,我们下面对其修改了。

首先,我们在 一大堆 using 中加入“using Microsoft.EntityFrameworkCore;”这样,就有了正确的命名空间来对下面的代码进行支持了。

之后,在 public class myDataBase 后面加上“ : DbContext”。

再然后在方法里建立两个方法——其实说白了相当于数据库中的“表”。

public DbSet<MyUser> Users { get; set; }
public DbSet<MyNews> News { get; set; }

其中,Users 与 News 必须与数据库表明一致,而MyUser 与 MyNews 就是类构成——其结构,自己看心情起。^^

有了两个表后,我们要想一想了。不对呀,我们不连数据库,有两个表有毛用呀,所以我们要连接一下数据库(说实话,我感觉我有点本末倒置)。代码是:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder.UseSqlServer(@"Server=SQLOLEDB;Data Source=(local);uid=sa;pwd=za;DataBase=myDataBase");
}

其中我们看到在 optionsBuilder 对象中有一个 UseSqlServer方法,说明这是连接 SQL Server 的,如果在 project.json 中选择其它数据库相应的类库,那么这里的 UseSqlServer 也会变成其它的数据库连接方法,比如 Sqlite 就是 UseSqlite。

后面的 @”Server=SQLOLEDB;Data Source=(local);uid=sa;pwd=za;DataBase=myDataBase” 是针对数据库的连接字符串,根据自己的需要进行修改

下面,我们看看 myDataBase.cs 文件里面就是下面这个样子:
技术分享

我们发现在这个文件中,IDE 提出了两个错误点,可能大家用别的编辑器时不会发现——“MyUser”与“MyNews”。

上面说了,这两货是数据库中表结构的类,所以我们最好先在数据库中建立相应的表。别忘记数据库名是:myData——见连接字符串。

我用得是 SQL Server 2012 具体情况如下:
技术分享

Users表(主键:id,自增):
技术分享

News表(主键:news_id,自增):
技术分享

好了,有表了之后,我们就要实现这两个表了。怎么实现呢,当然要对这两个家伙建立相应的类啦。

依习惯,我个人的习惯呀,你们随意了。就是在Model 中建个 dbo 来存放相应表对应的类。之后,我们在 dbo 文件夹里建立相应的两个类文件:MyUser.cs、MyNews.cs

技术分享

好,我们来具体实现,先整 MyUser.cs,代码如下:

using System;
using System.ComponentModel.DataAnnotations;

namespace testProject.Model.dbo
{
    public class MyUser
    {
        [Key]
        public int id { get; set; }
        public string name { get; set; }
        public DateTime? createtime { get; set; }
    }
}

我们从中可以看出,方法 id、name、createtime 是对应着数据库表 Users 里面的每个字段,连类型也是一一对应。

[Key] 标签标注着 id 是关键字。而如果要在类中调用 [Key] 就必须要引入命令空间:System.ComponentModel.DataAnnotations。

这样第一个表的类就实现了,第二个 MyNews.cs 如同上,我们照“类画类”。

using System;
using System.ComponentModel.DataAnnotations;

namespace testProject.Model.dbo
{
    public class MyNews
    {
        [Key]
        public int news_id { get; set; }
        public string news_name { get; set; }
        public string news_content { get; set; }
        public DateTime? news_createtime { get; set; }
    }
}

两个类实现完了后,我们就要向数据库类 myDataBase.cs 中引入这两个家伙。因为都在 dbo 文件夹中,所以我们只要在 myDataBase.cs 加入命名空间:testProject.Model.dbo 即可。

技术分享

这样,数据库连接就成了。其实的只要调用这个 Model 就成了,和平常的 MVC 一样。

什么???有人不会操作。。。天那。。。好吧,我先简单介绍一下吧!T_T

我们先在 Controller 文件夹中的 HomeController.cs 建立一个方法,就叫 writeUser。

public string writeUser()
        {
            Model.myDataBase db = new Model.myDataBase();

            Model.dbo.MyUser user = new Model.dbo.MyUser
            {
                name = "MysteriousMan",
                createtime = DateTime.Now
            };

            db.Users.Add(user);
            db.SaveChanges();

            return "ok";
        }

运行结果 Web 页:
技术分享

运行结果 数据库:
技术分享

这样,.net Core 数据库的基本操作就这样子鸟~~~

.net Core 自我学习随笔(三)——我们整个数据库如何?

标签:技术分享   iss   com   分享   ace   component   int   个数   over   

人气教程排行