.NET跨平台:在Linux上基于ASP.NET 5用EF7生成数据库

Linux用的是Ubuntu,dnx版本是1.0.0-beta6-12120,EF版本是7.0.0-beta5。

以下是用Entity Framework 7生成SQL Server数据库的操作步骤。

在project.json中添加Entity Framework 7的引用:

{
    "dependencies":{
        "EntityFramework.SqlServer": "7.0.0-beta5",
        "EntityFramework.Commands": "7.0.0-beta5"
    }
}

定义实体类,比如:

namespace CNBlogs.AboutUs.Models
{
    public class TabNav
    {
        public int Id { get; set; }

        public string Title { get; set; }

        public string Url { get; set;}

        public bool IsActive { get; set; }
    }
}

定义DbContext,比如:

using Microsoft.Data.Entity;
using CNBlogs.AboutUs.Models;

namespace CNBlogs.AboutUs.Data
{
    public class EfDbContext : DbContext
    {
        public DbSet<TabNav> TabNavs { get; set; }
    }
}

在config.json中添加数据库连接字符串:

{
    "Data": {
        "ConnectionString": "[数据库连接字符串]"
    }
}

在Startup.cs中加载config.json中的配置:

public Startup(IApplicationEnvironment appEnv)
{
    Configuration = new Configuration(appEnv.ApplicationBasePath)
        .AddJsonFile("config.json");
}

public IConfiguration Configuration { get; set; }

注:

1)需要添加命令空间Microsoft.Framework.ConfigurationModel与Microsoft.Framework.Runtime;

2)当时由于没有正确加载config.json,遇到了 No data stores are configured问题。

在Startup.cs中配置EF:

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc();

    services.AddEntityFramework()
        .AddSqlServer()
        .AddDbContext<EfDbContext>(options =>
        {
            options.UseSqlServer(Configuration.Get("Data:ConnectionString"));
        });
}

注:需要引用命名空间Microsoft.Data.Entity。

在project.json中添加ef command以使用EF的迁移功能生成数据库。

{
    "commands":{
        "ef": "EntityFramework.Commands"
}

安装所需要的包包:

dnu restore

用ef命令进行数据库的生成:

dnx . ef migration add FirstMigration
dnx . ef migration apply

生成成功!

【遗留问题】

以上的操作是使用基于mono的dnx完成的,使用基于corelcr的dnx会出现下面的问题:

System.PlatformNotSupportedException: This platform does not support getting the current color.
   at System.ConsolePal.get_ForegroundColor()
   at Microsoft.Data.Entity.Commands.Utilities.ConsoleCommandLogger.WriteVerbose(String message)

这是由于corefx的ConsolePal.Unix.cs中没有实现ForegroundColor属性的get操作。

时间: 2024-10-26 03:54:29

.NET跨平台:在Linux上基于ASP.NET 5用EF7生成数据库的相关文章

.NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点

今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现在换成了ASP.NET Core,主要代码如下: var psi = new ProcessStartInfo(command, arguments) { RedirectStandardOutput = true, RedirectStandardInput = true, CreateNoWin

.NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点

2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上用V2015开发的,以self-contained应用部署方式发布到Linux服务器.Linux服务器用的是Ubuntu 14.04,站点通过supervisor以服务方式运行,部署在2台阿里云服务器上,用了1台阿里云内网负载均衡. 虽然是很简单的站点,虽然是很小的一步,但是进入生产环境就意味着对性

在Linux上运行ASP.NET vNext

最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希望对其他想要尝鲜的人有所帮助. 运行环境 Ubuntu Server 14.04 VirtualBox Mono >= 3.4.1 *由于Ubuntu库中的Mono版本比较陈旧,满足不了最低要求,所以第一步要做的就是安装最新版本的Mono. 安装Mono 1. 首先从GitHub上取得mono代码:

尝试在Linux上部署Asp.net Core应用程序

快两个月没接触.net,倒是天天在用Linux,所以想尝试一下在Linux运行喜欢的.net 应用. 安装CentOS 安装.Net core for Linux 创建Asp.net Core应用程序 安装Nginx 配置Nginx代理 1,安装CentOS系统 这个网上教程太多滤过. 2,安装跨平台的.NET Core SDK for CentOS7 sudo yum update sudo yum install libunwind libicu sudo yum install dotne

使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序

说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更高版本的 Docker 客户端 .NET Core SDK 2.2 或更高版本 Visual Studio Code 代码编辑器,以及 C# 语法插件 1.17.1 或更高版本 注:本文实验环境是 Ubuntu 18.04 LTS.如果您的机器是 Window,也可以把 Docker 装在虚拟机或服

Linux上基于网络自动化安装系统(CentOS6.5+DHCP+TFTP+PXE)

一.前言 安装系统常用的方式就是,光驱安装,U盘安装,但是这种手动安装方法效率都很低,而且出错概率大.现在网卡速率也都基本1000M,所以网络安装就显得更简单,把管理员从重复.繁琐的安装操作中解放出来.当然,这只是一个局域网内的实验配置,生产环境会有更专业的解决方案,但是这个原理都是一样的. 二.原理 本次实验用到的协议和技术有:    DHCP: Dynamic Host Configuration Protocol 动态主机配置协议    TFTP: Trivial File Transfe

使用 Nginx 在 Linux 上托管 ASP.NET Core

1.官网地址https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-2.2 2. 原文地址:https://www.cnblogs.com/Spinoza/p/11601020.html

Asp.net core 通过Models 生成数据库的方法

????其实Getting Started当中有着详细的说明,https://docs.efproject.net/en/latest/platforms/aspnetcore/new-db.html.但是有网友问道,就说一下好了. 新建项目,Asp.net core,选择不适用身份验证. 添加项目引用.这里还是使用postgreSql. 在Nuget 控制台中输入命令: Install-Package Npgsql.EntityFrameworkCore.PostgreSQL Install-

在Linux上实现一个可用的stateless双向静态NAT模块

关于Linux上如何配置NAT的资料已经不少,可谓铺天盖地!本文与此无关.本文提供一种iptables之外的方式.iptables?不!why?因为iptables配置的NAT是stateful的,它的实现依赖一个叫做conntrack的模块,什么是conntrack?Oh,NO!这可是我的专长,但我不想在本文中说它,认识我的人都知道,我扯这个话题我能扯上12个小时...都还扯不完.也许你不知道什么是stateful NAT,但是如果你是一个有心人,或者说是一个技术还算精湛的Linux网络管理员