У меня есть следующая пара сущностей.
public class Document : BaseEntity
{
public Document()
{
}
public StoredFile StoredFile { get; set; }
}
public class StoredFile : BaseEntity
{
private StoredFile(string fileName, string fileLocation)
{
FileName = fileName;
FileLocation = fileLocation;
}
public string FileName { get; set; }
public string FileLocation { get; set; }
public static StoredFile Create(string FileName, string FileLocation)
{
return new StoredFile(FileName, FileLocation);
}
}
И у меня есть следующий контроллер.
[Route("api/[controller]")]
public class FileController : Controller
{
private readonly IFileSaver _fileSaver;
private readonly IRepository _documentRepository;
public FileController(IFileSaver fileSaver, IRepository documentRepository)
{
_fileSaver = fileSaver;
_documentRepository = documentRepository;
}
[HttpPost("[action]")]
public async Task<IActionResult> UploadDocument(IFormFile formFile)
{
if (formFile.Length <= 0) return Ok();
var retVal = await _fileSaver.SaveFile(formFile);
retVal = _documentRepository.Add(retVal);
return Ok(new { StoredFileId = retVal.Id });
}
}
Мой репозиторий - это базовый общий репозиторий, в который добавлены dbSet и SaveChanges.
Когда я использую метод UploadDocument и пытаюсь сохранить StoredFile, он также сохраняет пустой объект Document в таблице Documents.
Во время метода сохранения я увидел в выводе консоли что-то вроде этого:
[Parameters=[@p0='?' (DbType = Int32), @p1='?' (DbType = Int32), @p2='?' (DbType = Int32), @p3='?' (DbType = DateTime), @p4='?' (Size = 4000), @p5='?' (DbType = Int32), @p6='?' (DbType = Int32), @p7='?' (DbType = Int32), @p8='?' (DbType = DateTime), @p9='?' (Size = 4000), @p10='?' (DbType = Int32), @p11='?' (DbType = Int32), @p12='?' (DbType = Int32), @p13='?' (DbType = Int32), @p14='?' (DbType = Int32), @p15='?' (Size = 4000)], CommandType='Text', CommandTimeout='30']
INSERT INTO `Documents` (`AuthorityId`, `CaseId`, `CorrespondenceCharacterId`, `DateChanged`, `Description`, `DistrictId`, `DocumentDirection`, `DocumentTypeId`, `IncomingDate`, `Lp`, `PlanId`, `ReferencedDocumentId`, `SenderId`, `SourceId`, `StoringPlaceId`, `Subject`)
VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8, @p9, @p10, @p11, @p12, @p13, @p14, @p15);
SELECT `Id`
FROM `Documents`
WHERE ROW_COUNT() = 1 AND `Id` = LAST_INSERT_ID();
Я не указывал модель вручную, когда я пробовал, у меня были похожие эффекты.
Кто-нибудь знает, что я сделал не так?
P.S. Когда я использовал метод SeedData в моем DatabasePopulator, сохранение StoredFile не приводит к вставке пустого документа.
общедоступный T Add <T> (T entity), где T: BaseEntity {_dbContext.Set <T> () .Add (entity); _dbContext.SaveChanges <T> (); возвратный объект; }





что есть в
_documentRepository.Add(retVal)?