.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操作。
【遗留问题解决】
后来通过修改corefx中ConsolePal.Unix.cs的代码,让ForegroundColor返回一个默认颜色。然后将自己编译出来的System.Console.dll复制到dnx-coreclr-linux-x64/bin/中临时解决了问题。
.NET跨平台:在Linux上基于ASP.NET 5用EF7生成数据库的更多相关文章
- .NET跨平台之旅:在生产环境中上线第一个运行于Linux上的ASP.NET Core站点
2016年7月10日,我们在生产环境中上线了第一个运行于Linux上的ASP.NET Core站点,这是一个简单的提供后端服务的ASP.NET Core Web API站点. 项目是在Windows上 ...
- .NET跨平台之旅:生产环境中第2个跑在Linux上的ASP.NET Core站点
今天我们在生产环境中上线了第2个跑在Linux上的ASP.NET Core站点.这是一个简单的Web API站点,通过命令行的方式调用安装在Linux服务器上的程序完成操作.之前用的是nodejs,现 ...
- 使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序
本文于2019年04月10日将标题「CentOS7 部署 ASP.NET Core应用程序」修改为「使用 Nginx 在 Linux 上托管 ASP.NET Core 应用程序」. 环境准备 VMwa ...
- 使用 Nginx 在 Linux 上托管 ASP.NET Core
server { listen 80; server_name example.com *.example.com; location / { proxy_pass http://localhost: ...
- 一、netcore跨平台之 Linux上部署netcore和webapi
这几天闲着的时候在linux上部署了一下netcore webapi,下面就纪要一下这个过程. 中间遇到不少的坑,心里都是泪啊. 话不多说,开始干活. ------------------------ ...
- 以self-contained方式在Linux上部署ASP.NET Core站点
今天准备将一个在Windows上用VS2015开发的ASP.NET Core程序部署到阿里云Linux服务器上,部署时发现这台服务器是内网服务器,无法直接安装.NET Core SDK,于是想到尝试用 ...
- 在Linux上运行ASP.NET vNext
最新的ASP.NET vNext完全开源且可以跨多个平台运行,在Windows环境下我尝试了下,几乎没花什么工夫就跑起了Sample,而在Linux环境下则要多花了不少时间,所以特别记录下整个过程,希 ...
- 尝试在Linux上部署Asp.net Core应用程序
快两个月没接触.net,倒是天天在用Linux,所以想尝试一下在Linux运行喜欢的.net 应用. 安装CentOS 安装.Net core for Linux 创建Asp.net Core应用程序 ...
- 使用 Docker 在 Linux 上托管 ASP.NET Core 应用程序
说在前面 在阅读本文之前,您必须对 Docker 的中涉及的基本概念以及常见命令有一定了解,本文侧重实战,不会对相关概念详述. 同时请确保您本地开发机器已完成如下安装: Docker 18.06 或更 ...
随机推荐
- Cacti客户端SNMP的安装和配置
安装 yum -y install net-snmp 配置 编辑/etc/snmp/snmpd.conf文件 找到下面这句: access notConfigGroup "" ...
- 往sql数据库表中添加字段
通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] add 字段名 smallin ...
- dubbo properties
DUBBO配置项的优先级: java -D优先于 Spring配置,Spring配置优先于 properties文件的配置,这也符合一般项目的规则. 覆盖策略: JVM启动-D参数优先,这样可以使用户 ...
- 一个PHP日历程序
<?php //<-------处理通过GET方法提交的变量;开始--------> if($HTTP_GET_VARS[year]=="") { ...
- 企业好助手U-Mail邮件服务器软件
对于一家企业,最核心的是什么?有人说人才,有人说技术,也有人说是数据(信息),依小编来 看,这些答案都没错,人才会流动,技术在不断更新,唯有数据(信息),日积月累,将沉淀为公司历史的一部分,作为决策的 ...
- Linux socket 获得本地IP和广播地址
#include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <netine ...
- Java NIO教程 前言
阅读本文前,建议你先了解 旧I/O NIO 是 New I/O 的缩写,要了解它真正的内涵,需要掌握的知识还是比较多的.我努力在这几篇笔记里,勾勒出整个io的面貌.为大家的深入学习铺路. I/O简史 ...
- JDBC basic
http://www.tutorialspoint.com/jdbc/jdbc-sample-code.htm maven <dependency> <groupId>mysq ...
- andorid 练习之黑名单
activity_mian.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...
- Github两步认证
获取密钥:ssh-keygen -t rsa 切换到公钥所在路径:cd .ssh 查看该路径下的所有文件:ls 查看公钥:cat id_rsa.pub 获取密钥之后,去https://github. ...