2017-03-31 63 views
1

我有一個圖片模型:ASP.Net核心節能的base64字符串

public class Image 
{ 
    [Key] 
    public long ImagelId { get; set; } 
    public string base64 { get; set; } 
} 

我用類似以下內容:

public class CoreGoal 
{ 
    [Key] 
    public long CoreGoalId { get; set; } 
    [Required] 
    public string Title { get; set; } 

    public virtual ICollection<Image> Images { get; set; } 


    public CoreGoal() 
    { 

    } 
} 

我使用的MySQL數據庫。我打算將每個CoreGoal可能存儲的多個圖像存儲爲base64字符串。

每當我用base64字符串發出一個POST請求時,它是成功的,但是當保存到數據庫時,大部分字符串被切碎。

我是否使用了錯誤的數據結構來存儲base64即字符串?這是我的ASP.Net代碼中的問題還是MySql限制?

我該如何解決這個問題?

UPDATE:

我的倉庫類:

public class CoreGoalRepository : ICoreGoalRepository 
{ 
    private readonly WebAPIDataContext _db; 

    public CoreGoalRepository(WebAPIDataContext db) 
    { 
     _db = db; 
    } 

    //Add new 
    public void CreateCoreGoal(CoreGoal coreGoal) 
    { 
     _db.CoreGoals.Add(coreGoal); 
     _db.SaveChanges(); 
    } 

    //Get all 
    public IEnumerable<CoreGoal> GetAllCoreGoals() 
    { 
     return _db.CoreGoals 
      .Include(coreGoal => coreGoal.Benefits) 
      .Include(coreGoal => coreGoal.Images) 
      .ToList(); 
    } 
} 

public interface ICoreGoalRepository 
{ 
    void CreateCoreGoal(CoreGoal coreGoal); 
    IEnumerable<CoreGoal> GetAllCoreGoals(); 
} 

我的控制器:

[Route("api/[controller]")] 
    public class CoreGoalController : Controller 
    { 
     private readonly ICoreGoalRepository _coreGoalRepository; 

     //Controller 
     public CoreGoalController(ICoreGoalRepository coreGoalRepository) { 
      _coreGoalRepository = coreGoalRepository; 
     } 

     //Get methods 
     [HttpGet] 
     public IEnumerable<CoreGoal> GetAll() 
     { 
      return _coreGoalRepository.GetAllCoreGoals(); 
     } 

     //Create 
     [HttpPost] 
     public IActionResult Create([FromBody] CoreGoal item) 
     { 
      if (item == null) 
      { 
       return BadRequest(); 
      } 

      _coreGoalRepository.CreateCoreGoal(item); 

      return CreatedAtRoute("GetCoreGoal", new { id = item.CoreGoalId }, item); 
     } 
    } 
+3

可以通過數據庫中得到截斷屬性[StringLength(長度)。檢查字符串的長度與數據庫中字段的長度。 – Simon

+0

圖像有多大,你試圖保存?它實際上保存了多少? – phuzi

+0

ASP.NET Core不會將任何內容保存到您的數據庫。這是其他技術,看起來像使用EF 6或EF Core。從像FluentMigrator這樣的移動器?它是一個現有的數據庫嗎?在確定診斷之前需要回答這些問題。 –

回答

1

當你POST請求返回也可以作爲一個JSON創建的對象,所以你可以看到網址,或者在帖子中輸入一個斷點並查看base64字符串的值。

如果URL是好的那麼它的數據庫,所以你需要手動設置URL的最大大小與

相關問題