すべてのデータは、Entity Frameworkコアを使用してMySqlインスタンスに挿入されません。

asp.net-core-mvc c# entity-framework-core mysql

質問

MariaDbインスタンスデータベース(MySqlのフォーク)を使用し、Entity Framework Coreを使用すると、前に経験したことのない問題が発生します。このポストは何が起こっているのかわからないので、皆さんの中には以前これを経験した。

問題

次のシナリオを実行します。私たちはこのような表を持っています

News
-------------------------------------
| Id          | int      | not null |
| Title       | text     | not null |
| Content     | longtext | not null |
| Base64Image | blob     | null     |
-------------------------------------

私のWebアプリケーションはASP.NET Core MVCでビルドされているので、C#を使用して、 Newsオブジェクトの新しいインスタンスを作成します。

public IActionResult New (NewsViewModel model)
{
    using (var db = new DatabaseContext())
    {
        var news = new News()
        {
            Title = model.Title,
            Content = model.Content
        };

        db.News.Add(news);
        db.SaveChanges();
    }
}

正確に私は通常のASP.NET MVCアプリケーションから慣れているので、これはうまく動作すると思います。しかしここにキャッチがあります。

私のデータビジュアライザ内のデータを見ると(この場合はHeidiSQLを使用しています)、文字列Contentが短縮されていることがわかります。私は、HeidiSQLの設定で文字列全体を表示せず、 x文字だけを表示すると考えました。今、データベースからこのエントリを取り出すと、実際には文字列x実際にはx文字だけ長いことがわかります。最初の文字列はx * 5です。

Content文字列が短くなるだけでなく、ユーザーがbase64文字列に変換したい画像をアップロードした場合にも、これはいくつかの問題を引き起こします。これらの文字列は長くなる傾向があり(もちろんデータにもよりますが)、これも短縮されます。

この記事の冒頭で述べたように、私は何が起こっているのか全く分かりません。私はこれまでにこの奇妙な問題に遭遇したことはありません。私は解決策に私の道を行くことができません。

誰かが手を貸して、何が起こっているのかを私に説明することができますか?

文字列コンテンツの例

dbに保存する前に(実際の文字列を保存したい、テキストエリアのフロントエンドに入力する) 490文字

Lorem ipsum dolorはamet、忠実なinsolens menandri、per utamur diceret menandri、fastidii petionium explicari et cumの中にあります。 Ex saperet definiebas quaerendum pri。 Ei sed alii alterum alienum、mei graeco meliore pertinax eu、nec cu propriae molestie。彼の誕生日は、エラーが発生した瞬間、了解しています。プライムアンシラポンデルタムでは、栄養補助食品である。法人所得税法、法人税法、法人税法、法人税法、

データベースに保存した後(実際の文字列を取得後の保存として) 252文字

Lorem ipsum dolorはamet、忠実なinsolens menandri、per utamur diceret menandri、fastidii petionium explicari et cumの中にあります。 Ex saperet definiebas quaerendum pri。 Ei sed alii alterum alienum、mei graeco meliore pertinax eu、nec cu propriae molest

エクストラ

実際にデータベースに保存されている文字は、一貫して235〜260文字のようです。休息は廃止されました。私はいくつかの症例(238文字、243,253など)

NEWS MODEL

public class News
{
    public int Id { get; set; }

    [Display(Name = "Title", ResourceType = typeof(Resources.General))]
    public string Title { get; set; }

    [Display(Name = "Content", ResourceType = typeof(Resources.General))]
    public string Content { get; set; }

    public DateTime CreateDate { get; set; }

    [Display(Name = "ThumbnailImage", Description = "NewsThumbnailImageDescription", ResourceType = typeof(Resources.General))]
    public string Base64ThumbnailImage { get; set; }

    [Display(Name = "HeaderImage", Description = "NewsHeaderImageDescription", ResourceType = typeof(Resources.General))]
    public string Base64HeaderImage { get; set; }

    public string UserProfileUserName { get; set; }

    public UserProfile UserProfile { get; set; }
}

DB TABLE

ここに画像の説明を入力

受け入れられた回答

一時的な解決策

現在のところ、ASP.NET MVC Coreの公式のMySql.EntityFramework.Coreライブラリは正しく動作していないため、これはバグです。コミュニティ版: Pomelo.EntitytFramework.Core 、すべてが魅力のように機能します。これは私のためにそれをしました。

ここに Pomeloリポジトリがあります



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ