[英]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.