sql >> Databáze >  >> RDS >> Mysql

EF:Nesprávné použití prostorového/fulltextového/hash indexu a explicitního pořadí indexu

Vyřešeno.

V migračním souboru nahraďte položky .Index příkazy SQL, jak je uvedeno níže

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

Přidejte odpovídající příkaz SQL na konec vaší metody Up() (pro každý index)

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

Problémy, které přidám s DataReaders, se týkají konektoru MySQL. Konektor MySQL nepodporuje více aktivních připojení. Chcete-li to zvládnout, pokud jste to měli v ovladači

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

Nyní by to mělo být

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

Pokud nevíte, jak převést svůj .Index() na příkazy SQL, stačí

update-database -verbose

a všechny příkazy SQL se zobrazí




  1. Autoincrement v oracle do již vytvořené tabulky

  2. Přístup pomocí Microsoft SQL Server – import velkých datových sad pomocí SSIS

  3. Chyba MYSQLi:Uživatel již má aktivních připojení více než 'max_user_connections'

  4. Jak CHAR() funguje v MariaDB