.NET Core加入EF工具和执行初始迁移

加入EF工具和执行初始迁移

在本节中,您将使用包管理器控制台(PMC):

  • 添加实体框架核心工具包。这个包需要添加迁移和更新数据库。
  • 添加一个初始迁移。
  • 更新数据库的初始迁移。

从工具菜单中,选择NuGet包管理器>包管理器控制台。

PMC菜单

PMC,输入以下命令:

PMC

Add-Migration Initial
Update-Database

忽略下面的错误消息,我们修复它在接下来的教程:

Microsoft.EntityFrameworkCore.Model.Validation[30000]
没有指定的小数类型列“价格”实体类型“电影”。这将导致默默地截断值如果他们不适应默认精度和等级。显式地指定SQL server列类型,可以容纳所有的值使用“ForHasColumnType()”。

PMC

Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration Initial
Update-Database

注意:如果你收到的一个错误 Install-Package命令,打开NuGet包管理器和搜索 Microsoft.EntityFrameworkCore.Tools包中。这允许您安装包或检查是否已经安装。另外,看到CLI的方法如果你有PMC的问题。

Add-Migration命令创建代码来创建初始数据库模式。中指定的模式是基于模型 DbContext(数据/ MvcMovieContext。cs文件)。的 Initial参数是用于迁移的名字。您可以使用任何名字,但按照惯例你选择一个名字,描述迁移。看到介绍了迁移为更多的信息。

Update-Database命令运行 Up在迁移/ <时间戳> _Initial方法。cs文件,创建数据库。

您可以执行前面的步骤使用命令行接口(CLI)而不是PMC:

  • 添加英孚的核心工具.csproj文件。

  • 运行以下命令从控制台(在项目目录):

    console

dotnet ef migrations add Initial
dotnet ef database update

如果你运行应用程序并得到错误:

text

  • SqlException: Cannot open database "Movie" requested by the login.
    The login failed.
    Login failed for user 'user name'.
    

你可能没有运行 dotnet ef database update.

测试应用程序

  • 运行应用程序并利用Mvc电影链接。

  • 点击创建新的链接,创建一个电影。

    创建视图与字段类型,价格,发布日期和标题

  • 你可能无法输入小数点或逗号 Price字段。支持jQuery验证对于非英语地区,使用逗号(",")一个小数点,和非us - english日期格式,你必须采取措施全球化应用程序。https://github.com/aspnet/Docs/issues/4076和额外的资源为更多的信息。现在,仅仅输入整数10。

  • 在一些地方你需要指定日期格式。参见下面突出显示的代码。

C#

using System;
using System.ComponentModel.DataAnnotations;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime ReleaseDate { get; set; }
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }
}

我们会讨论 DataAnnotations后面的教程。

利用创建将导致表单发布到服务器,电影信息保存在数据库中。应用重定向到/电影网址,显示新创建的电影信息。

电影视图显示新创建的电影清单

创建两个影片条目。试着编辑的细节和删除链接,所有的功能。

C#

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<CookiePolicyOptions>(options =>
    {
        // This lambda determines whether user consent for non-essential cookies is needed for a given request.
        options.CheckConsentNeeded = context => true;
        options.MinimumSameSitePolicy = SameSiteMode.None;
    });


    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

    services.AddDbContext<MvcMovieContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}

C#

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();

    services.AddDbContext<MvcMovieContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
}

上面突出显示的代码显示了电影被添加到数据库中依赖注入容器(在启动。cs文件)。 services.AddDbContext<MvcMovieContext>(options =>指定要使用的数据库连接字符串。 =>是一个λ运营商.

打开控制器/ MoviesController。cs文件并检查构造函数:

C#

public class MoviesController : Controller
{
    private readonly MvcMovieContext _context;

    public MoviesController(MvcMovieContext context)
    {
        _context = context;
    }

构造函数使用依赖注入注入数据库上下文(MvcMovieContext)到控制器。用于每个数据库上下文CRUD在控制器的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值