当前位置: 移动技术网 > IT编程>开发语言>.net > (17)ASP.NET Core EF基于数据模型创建数据库

(17)ASP.NET Core EF基于数据模型创建数据库

2019年08月19日  | 移动技术网IT编程  | 我要评论

青岛理工,入党思想汇报2012年3月,春秋助手

1.简介

使用entity framework core构建执行基本数据访问的asp.net core mvc应用程序。使用迁移(migrations)基于数据模型创建数据库,你可以在windows上使用visual studio 2017 powershell或在windows、macos或linux上使用.net core cli来学习创建数据库。

2.创建新项目

2.1系统必备

在创建新项目之前都要检查是否安装以下软件:
●具有以下工作负载的visual studio 2017 15.7版或更高版本(visual studio必备):
  ○“asp.net和web开发”(位于“web 和云”下)
  ○“.net core跨平台开发”(位于“其他工具集”下)
●.net core 2.1 sdk.(visual studio、cli必备)

2.2 创建项目

core mvc项目可以通过visual studio手动来创建,也可以通过在cli输入命令行来创建,两者区别是前者限制在windows平台上创建项目,后者是可以跨平台创建项目。

2.2.1visual studio手动来创建项目

●打开visual studio 2017
●“文件”>“新建”>“项目”。
●从左菜单中选择“其他项目类型”>“visual studio 解决方案”。
●点击新建解决方案右键选择“添加”>“新建项目”>“已安装”>“visual c#”>“.net core” 。
●选择“asp.net core web 应用程序”。
●输入“mycoreweb”自定义名称,然后单击“确定”。
●在“新建asp.net core web应用程序”对话框中:
  ○确保在下拉列表中选择“.net core”和“asp.net core 2.1”
  ○选择“web 应用程序(模型视图控制器)”项目模板
  ○确保将“身份验证”设置为“不进行身份验证”
  ○单击“确定”
警告:如果你使用“单独用户帐户”(而不是“无”)进行身份验证,entity framework core模型会添加到models\identitymodel.cs中的项目。

2.2.2通过在cli输入命令行来创建项目

运行以下命令以创建mvc项目:

dotnet new mvc -n mycoreweb

更改为项目目录,你输入的下一个命令需要针对新项目运行:

cd mycoreweb

3.安装entity framework core

要安装ef core,请为要作为目标对象的ef core数据库提供程序安装程序包。有关可用提供程序的列表,请参阅。因为我本机是用sqlserver数据库,所以可以通过以下两种方式安装ef core。

3.1在包管理器控制台输入命令来安装程序包(“工具”>“nuget包管理器”>“程序包管理器控制台”)

install-package microsoft.entityframeworkcore.sqlserver -version 2.2.0

3.2通过在cli输入命令行来安装程序包

--更改为项目所在目录
cd /d d:\project\mycoreweb
--输入cli命令安装程序包
dotnet add package microsoft.entityframeworkcore.sqlserver

4.创建模型

在models文件夹下创建bloggingcontext.cs文件,为了简单起见,我们都将blog、post实体代码写在bloggingcontext.cs文件中:

public class bloggingcontext : dbcontext
{
    public bloggingcontext(dbcontextoptions<bloggingcontext> options): base(options){ }
    public dbset<blog> blogs { get; set; }
    public dbset<post> posts { get; set; }
}
public class blog
{
    public int blogid { get; set; }
    public string url { get; set; }
    public icollection<post> posts { get; set; }
}
public class post
{
    public int postid { get; set; }
    public string title { get; set; }
    public string content { get; set; }
    public int blogid { get; set; }
    public blog blog { get; set; }
}

5.使用依赖注入注册上下文

在应用程序启动过程中,通过依赖关系注入注册服务(如 bloggingcontext),以便能够通过构造函数的参数和属性向使用服务的组件(如 mvc 控制器)自动提供该服务。如果想要在mvc控制器里面调用bloggingcontext.cs,那么就要在startup.cs中将其注册为服务。

public void configureservices(iservicecollection services)
{
    var connection = @"server=.;database=blogging;trusted_connection=true;connectretrycount=0";
    services.adddbcontext<bloggingcontext>(options => options.usesqlserver(connection));
}

为简单起见,这里把连接字符串直接在代码中定义。但是通常是会将连接字符串放在配置文件或环境变量中。例如:

appsettings.json
{
  "logging": {
    "loglevel": {
      "default": "warning"
    }
  },
  "allowedhosts": "*",
  "connectionstrings": {
    "bloggingdatabase": "server=.;database=blogging;trusted_connection=true;"
  }
} 

startup.cs中其注册的服务代码为:

public void configureservices(iservicecollection services)
{
    services.adddbcontext<bloggingcontext>(options =>
    options.usesqlserver(configuration.getconnectionstring("bloggingdatabase")));
}

6.迁移创建数据库(重点)

这个章节比较重要,下面让我们来学习下如何迁移创建数据库。

6.1visual studio powershell手动来创建项目(“工具”>“nuget包管理器”>“程序包管理器控制台”)

add-migration initialcreate
update-database

如果收到错误,指出the term 'add-migration' is not recognized as the name of a cmdlet,请关闭并重新打开visual studio。
add-migration命令为迁移搭建基架,以便为模型创建一组初始表。update-database命令创建数据库并向其应用程序新的迁移。
因为程序包管理器不支持powershell 2.0版本的迁移,需要升级到3.0版本,所以这里就暂时演示不了,请大家自行升级3.0或以上版本测试。

6.2通过在cli输入命令行来迁移

--更改为项目所在目录
cd /d d:\project\mycoreweb
--迁移搭建基架
dotnet ef migrations add initialcreate
--创建数据库并向其应用程序新的迁移
dotnet ef database update

下面我们来看看迁移创建数据库效果:


参考文献:
使用新数据库在asp.net core上开始使用ef core

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网