亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

EF:不正確使用空間/全文/哈希索引和顯式索引順序

EF:不正確使用空間/全文/哈希索引和顯式索引順序

C#
慕的地6264312 2021-05-07 14:16:48
我在我的WEB Api項目中使用了Entity Framework。我使用代碼優先遷移。事情是:進行初始遷移并嘗試更新數據庫后,出現此錯誤不正確使用空間/全文/哈希索引和顯式索引順序這是由更新數據庫中的此SQL命令引起的:create table `Articles` ( `articleId` int not null  auto_increment , `title` longtext not null , `digest` longtext, `content` longtext not null , `imgLink` longtext not null , `releaseDate` datetime, `userId` int not null ,  primary key ( `articleId`)) engine=InnoDb auto_increment=0  CREATE index  `IX_userId` on `Articles` (`userId` DESC) using HASHSQL命令是從遷移中的以下代碼生成的:CreateTable(            "dbo.Articles",            c => new                {                    articleId = c.Int(nullable: false, identity: true),                    title = c.String(nullable: false, unicode: false),                    digest = c.String(unicode: false),                    content = c.String(nullable: false, unicode: false),                    imgLink = c.String(nullable: false, unicode: false),                    releaseDate = c.DateTime(precision: 0),                    userId = c.Int(nullable: false),                })            .PrimaryKey(t => t.articleId)            .ForeignKey("dbo.Users", t => t.userId, cascadeDelete: true)            .Index(t => t.userId);似乎在創建索引時出現DESC和HASH會導致此錯誤。關于如何更改生成的sql索引創建的任何想法,使其與簡單的索引一起使用?或者只是簡單地繞過此錯誤,以便我的更新數據庫可以通過?謝謝 !
查看完整描述

1 回答

?
阿晨1998

TA貢獻2037條經驗 獲得超6個贊

解決了。


在您的遷移文件中,用如下的sql命令替換.Index條目


CreateTable(

        "dbo.Articles",

        c => new

            {

                articleId = c.Int(nullable: false, identity: true),

                title = c.String(nullable: false, unicode: false),

                digest = c.String(unicode: false),

                content = c.String(nullable: false, unicode: false),

                imgLink = c.String(nullable: false, unicode: false),

                releaseDate = c.DateTime(precision: 0),

                userId = c.Int(nullable: false),

            })

        .PrimaryKey(t => t.articleId)

        .ForeignKey("dbo.Users", t => t.userId, cascadeDelete: true)

        .Index(t => t.userId); // REMOVE THIS

在Up()方法的底部添加相應的SQL命令(對于每個索引)


Sql("CREATE index `IX_userId` on `Articles` (`userId` DESC)");

然后我為DataReaders添加的問題與MySQL連接器有關。MySQL連接器不支持多個活動連接。要處理此問題,如果您的控制器中有此命令


public IEnumerable<Article> GetArticles()

{

    return db.Articles;

}

現在應該是


public IEnumerable<Article> GetArticles()

{

    return db.Articles.ToList(); // ToList() will manage the request to work with only ONE data reader, 

}

如果您不知道如何將.Index()轉換為SQL命令,只需


update-database -verbose

并且所有的SQL命令將顯示


查看完整回答
反對 回復 2021-05-21
  • 1 回答
  • 0 關注
  • 210 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號