sql >> Databasteknik >  >> RDS >> Mysql

EF:Felaktig användning av rumsligt/fulltext/hashindex och explicit indexordning

Löste det.

I din migreringsfil, ersätt .Index-poster med sql-kommandon som nedan

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

Lägg till motsvarande SQL-kommando längst ned i din Up()-metod (för varje index)

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

Problemen jag lägger till då med DataReaders är MySQL-anslutningsrelaterade. MySQL-anslutningen stöder inte flera aktiva anslutningar. För att hantera detta, om du hade detta i din handkontroll

public IEnumerable<Article> GetArticles()
{
    return db.Articles;
}

Nu borde det vara

public IEnumerable<Article> GetArticles()
{
    return db.Articles.ToList(); // ToList() will manage the request to work with only ONE data reader, 
}

Om du inte vet hur du konverterar dina .Index() till SQL-kommandon, bara

update-database -verbose

och alla SQL-kommandon visas




  1. Hur söker man efter ett specifikt värde i alla tabeller (PostgreSQL)?

  2. Skickar kolumnnamn som parameter i MySQL

  3. Entity Framework 6-transaktionsåterställning

  4. Ska jag använda MyISAM- eller InnoDB-tabeller för min MySQL-databas?