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

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

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

  1. {
  2. "dependencies":{
  3. "EntityFramework.SqlServer": "7.0.0-beta5",
  4. "EntityFramework.Commands": "7.0.0-beta5"
  5. }
  6. }

定义实体类,比如:

  1. namespace CNBlogs.AboutUs.Models
  2. {
  3. public class TabNav
  4. {
  5. public int Id { get; set; }
  6.  
  7. public string Title { get; set; }
  8.  
  9. public string Url { get; set;}
  10.  
  11. public bool IsActive { get; set; }
  12. }
  13. }

定义DbContext,比如:

  1. using Microsoft.Data.Entity;
  2. using CNBlogs.AboutUs.Models;
  3.  
  4. namespace CNBlogs.AboutUs.Data
  5. {
  6. public class EfDbContext : DbContext
  7. {
  8. public DbSet<TabNav> TabNavs { get; set; }
  9. }
  10. }

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

  1. {
  2. "Data": {
  3. "ConnectionString": "[数据库连接字符串]"
  4. }
  5. }

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

  1. public Startup(IApplicationEnvironment appEnv)
  2. {
  3. Configuration = new Configuration(appEnv.ApplicationBasePath)
  4. .AddJsonFile("config.json");
  5. }
  6.  
  7. public IConfiguration Configuration { get; set; }

注:

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

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

在Startup.cs中配置EF:

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.AddMvc();
  4.  
  5. services.AddEntityFramework()
  6. .AddSqlServer()
  7. .AddDbContext<EfDbContext>(options =>
  8. {
  9. options.UseSqlServer(Configuration.Get("Data:ConnectionString"));
  10. });
  11. }

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

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

  1. {
  2. "commands":{
  3. "ef": "EntityFramework.Commands"
  4. }

安装所需要的包包:

  1. dnu restore

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

  1. dnx . ef migration add FirstMigration
  2. dnx . ef migration apply

生成成功!

【遗留问题】

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

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

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

【遗留问题解决】

后来通过修改corefx中ConsolePal.Unix.cs的代码,让ForegroundColor返回一个默认颜色。然后将自己编译出来的System.Console.dll复制到dnx-coreclr-linux-x64/bin/中临时解决了问题。

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

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

    2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...

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

    今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...

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

    本文于2019年04月10日将标题「CentOS7 部署 ASP.NET Core应用程序」修改为「使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序」. 环境准备 VMwa ...

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

    server { listen 80; server_name example.com *.example.com; location / { proxy_pass http://localhost: ...

  5. 一、netcore跨平台之 Linux上部署netcore和webapi

    这几天闲着的时候在linux上部署了一下netcore webapi,下面就纪要一下这个过程. 中间遇到不少的坑,心里都是泪啊. 话不多说,开始干活. ------------------------ ...

  6. 以self-contained方式在Linux上部署ASP.NET Core站点

    今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用 ...

  7. 在Linux上运行ASP.NET vNext

    最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希 ...

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

    快两个月没接触.net,倒是天天在用Linux,所以想尝试一下在Linux运行喜欢的.net 应用. 安装CentOS 安装.Net core for Linux 创建Asp.net Core应用程序 ...

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

    说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...

随机推荐

  1. zookeeper节点失效重连机制

    http://www.blogjava.net/xylz/archive/2011/12/05/365578.html http://blog.csdn.net/tswisdom/article/de ...

  2. ORACLE 数据的逻辑组成

    数据块(block) Oracle数据块(Data Block)是一组连续的操作系统块.分配数据库块大小是在Oracle数据库创建时设置的,数据块是Oracle读写的基本单位.数据块的大小一般是操作系 ...

  3. Mahout源码分析之 -- QR矩阵分解

    一.算法原理 请参考我在大学时写的<QR方法求矩阵全部特征值>,其包含原理.实例及C语言实现:http://www.docin.com/p-114587383.html 二.源码分析 这里 ...

  4. URL Parsing

    [URL Parsing] urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True) Parse a URL into six ...

  5. [python] import curses

    python 中,我们使用 curses.wrapper 来创建终端交互window.使用 stdscr 来代表 window 对象. 使用方法: from curses import wrapper ...

  6. Java interview Advanced

    1. Can you override private or static method in Java ? Read more: http://java67.blogspot.com/2012/09 ...

  7. NLPP-03-Exercises

    <PYTHON自然语言处理>第3章 处理原始文本 更多更复杂有关处理HTML内容 http://www.crummy.com/software/BeautifulSoup/ 3.11 深入 ...

  8. CentOS 6.5 源码编译搭建LNMP(三台独立主机实现)

    搭建前准备: 1.三台独立主机 nginx:192.168.1.102 php-fpm:192.168.1.105 mysql:192.168.1.103 2.相关软件的源码包 nginx:nginx ...

  9. Ubuntu 编译安装 Linux 4.0.5 内核,并修复 vmware 网络内核模块编译错误

    . . . . . 今天把 Ubuntu 14.04 升级到了最新的 4.0.5 的内核版本,本来不打算记录下来的,但是升级的过程中确实遇到了一些问题,所以还是记录下来,分享给遇到同样问题的猿友. 先 ...

  10. [整理]PCB阻抗控制

    之前一直听说PCB设计中信号完整性及阻抗方面的要求,但是本人对此还是有很多的不了解,每次和别人讨论到这里后就不知道该怎么继续就这个问题交谈下去.正巧最近手头有一点工作有这方面的一些需求,就拿来花了一点 ...