我有一个Image模型:
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限制?
我该如何解决这个问题?
更新
我的存储库类:
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);
}
}
答案 0 :(得分:1)
当您发布帖子请求时,还会返回创建为JSON的对象,这样您就可以看到URL,或者在帖子中放置一个断点并查看base64字符串的值。
如果URL正常则为Db,因此您需要使用属性[StringLength(length)]
手动设置URL的最大大小