2017-03-31 58 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的最大大小与