簡體   English   中英

首先在MySQL數據庫上使用EF代碼進行格式錯誤的遷移

[英]malformed migrations using EF code first on a MySQL Database

我正在使用C#、. NET 4.5,EF6 Code First,MySQL構建應用程序。

添加遷移時,生成的代碼格式錯誤。 “使用”語句位於名稱空間塊內。 這是一個例子:

錯誤:(由EF生成)

namespace RevoHost.BL.Entities.Migrations
{
    using System;
    using System.Data.Entity.Migrations;

    public partial class Permissions : DbMigration
    {
        public override void Up()
        {
            CreateTable(
            // etc...

我期望:

using System;
using System.Data.Entity.Migrations;

namespace RevoHost.BL.Entities.Migrations
{

    public partial class Permissions : DbMigration
    {
        public override void Up()
        {
            CreateTable(
            // etc...

手動修復很容易,但是仍然很煩人。 我已經四處搜尋以尋找解決方案,但到目前為止,我仍無法提出解決方案。

我的DbContext類具有以下屬性:

[DbConfigurationType(typeof(MySqlEFConfiguration))]

然后,我將遷移配置如下:

namespace RevoHost.BL.Entities.Migrations
{
  internal sealed class Configuration : DbMigrationsConfiguration<RevoHost.BL.Entities.RevoContext>
  {
    public Configuration()
    {
      SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
      CodeGenerator = new MySql.Data.Entity.MySqlMigrationCodeGenerator();
      AutomaticMigrationsEnabled = false;
    }

我發現發生了什么事。 確實,正如Thewads在他的評論中所提到的那樣,該代碼本身並非畸形且完全合法。 因為這是我的第一個在MySQL而不是SQL Server上運行的EF6項目,所以我立即認為MySQL是罪魁禍首,顯然不是。

我看了另一個在遷移中首先使用EF6代碼的項目。 該代碼完全相同。 接下來,我檢查了從編譯器得到的確切錯誤。

錯誤1類型或名稱空間名稱'CodeDom'在名稱空間'RevoHost.BL.Entities.System'中不存在(您是否缺少程序集引用?)

(還有其他9個)

我已經在名為RevoHost.BL.Entities的命名空間中定義了一個實體。 系統 這會導致命名沖突; 編譯器在找到全局System命名空間之前,先在RevoHost.BL.Entities中找到System命名空間。

因此,簡而言之,答案是,請確保您未定義與系統名稱空間沖突的名稱空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM