使用Entity Framework Core不會在MySql實例中插入所有數據

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

使用MariaDb實例數據庫(MySql的fork)並使用Entity Framework Core,給我一個我以前從未體驗過的問題,因此這篇文章因為我不知道發生了什麼,並希望你們中的一些人可能會以前經歷過這個。

問題

採取以下方案。我們有一個看起來像這樣的表

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

使用C#,因為我的Web應用程序是在ASP.NET Core MVC中構建的,所以我創建了一個新的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個字符。現在,如果我從數據庫中取回此條目,我可以看到字符串IS實際上只有x個字符長,其中我的初始字符串可能是x * 5

這給我帶來了一些問題,因為縮短了Content字符串,但是如果用戶上傳了我可能想要轉換為base64字符串的圖像。這些字符串往往很長(當然取決於數據),這也會縮短。

正如本文開頭所提到的:我完全不知道發生了什麼。我以前從未遇到過這個奇怪的問題,而且我似乎無法通過google方式找到解決方案。

任何人都可以伸出援助之手向我解釋發生了什麼事嗎?

字符串內容的示例

在保存到db之前(我希望保存的實際字符串,在textarea前端輸入) 490個字符

Lorem ipsum dolor sit amet,ne per virtute insolens menandri,in utamur diceret menandri,fastidii petentium explicari et cum。 Ex saperet definiebas quaerendum pri。 Ei sed alii alterum alienum,mei graeco meliore pertinax eu,nec cu propriae molestie。 Id eum zril timeam,at error gloriatur consectetuer est,et vim ceteros assueverit。在pri ancillae ponderum,ius是一個vidit dicant laudem。 Ei usu corpora officiis principes,offendit percipitur eos et,qui ne consetetur concludaturque。

保存到數據庫後(保存後檢索的實際字符串) 252個字符

Lorem ipsum dolor sit amet,ne per virtute insolens menandri,in utamur diceret menandri,fastidii petentium 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個等)

新聞模型

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合法嗎? 是的,了解原因