.NET跨平台:在Linux上基於ASP.NET 5用EF7產生資料庫

來源:互聯網
上載者:User

標籤:

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 FirstMigrationdnx . 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操作。

.NET跨平台:在Linux上基於ASP.NET 5用EF7產生資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.