sql >> データベース >  >> RDS >> Mysql

EF:空間/フルテキスト/ハッシュインデックスと明示的なインデックス順序の誤った使用法

    解決しました。

    移行ファイルで、.Indexエントリを次のようなSQLコマンドに置き換えます

    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コマンドが表示されます




    1. LIKE演算子がMySQLでどのように機能するか

    2. PHPでオブジェクトを文字列に変換する

    3. MySQLトリガーがテーブルを更新できません-エラー1442を取得します

    4. OracleのTRANSLATE(…USING)関数