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這樣的移動器?它是一個現有的數據庫嗎?在確定診斷之前需要回答這些問題。 –