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);
}
}
可以通过数据库中得到截断属性[StringLength(长度)。检查字符串的长度与数据库中字段的长度。 – Simon
图像有多大,你试图保存?它实际上保存了多少? – phuzi
ASP.NET Core不会将任何内容保存到您的数据库。这是其他技术,看起来像使用EF 6或EF Core。从像FluentMigrator这样的移动器?它是一个现有的数据库吗?在确定诊断之前需要回答这些问题。 –