sql >> Database teknologi >  >> RDS >> Mysql

EF:Forkert brug af rumligt/fuldtekst/hash-indeks og eksplicit indeksrækkefølge

Løste det.

I din migrationsfil skal du erstatte .Index-poster med sql-kommandoer som nedenfor

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

Tilføj den tilsvarende SQL-kommando i bunden af ​​din Up()-metode (for hvert indeks)

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

De problemer, jeg tilføjer derefter med DataReaders, er MySQL-stik relaterede. MySQL-stik understøtter ikke flere aktive forbindelser. For at håndtere dette, hvis du havde dette i din controller

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

Nu skulle det være

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

Hvis du ikke ved, hvordan du konverterer dine .Index() til SQL-kommandoer, skal du bare

update-database -verbose

og alle SQL-kommandoer vises




  1. Hvordan kan jeg midlertidigt deaktivere en fremmednøglebegrænsning i MySQL?

  2. SQL til at generere en liste over tal fra 1 til 100

  3. MySQL:Hvordan kan jeg få tidsstemplet for den sidste indsættelse til databasen

  4. INDIEN, STD Code Finder Script i PHP, MYSQL, JQUERY