ASP.NET核心Web API-如何将属性组合作为原始数据存储到另一个模型的单个列中



我正在使用ASP。NET核心Web API。我有这些型号:

public abstract class EntityBase
{
[Key]
public int Id { get; set; }
}
public class Mandate : EntityBase
{
public DateTime DueDate { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public virtual TransactionLog TransactionLog { get; set; }
}
public class TransactionLog
{
[Key, ForeignKey("Mandate")]
public int? MandateId { get; set; }
public string RawData { get; set; }
public virtual Mandate Mandate { get; set; }
}

模型:委托和交易日志

委托书与TransactionLog 有一对一关系

任务表

  • Id
  • 到期日期
  • 开始日期
  • 结束日期

TransactionLog

  • MandateId(密钥(
  • RawData

ViewModel(Dto(:

public class MandateDto
{
public DateTime DueDate { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public int? MandateId { get; set; }
public string? RawData { get; set; }
}

EntityMapper:

public class EntityMapper
{
public Mandate FromMandateDtoToMandate(MandateDto mandate)
{
return new Mandate
{
DueDate = mandate.DueDate,
StartDate = mandate.StartDate,
EndDate = mandate.EndDate
};
}
public TransactionLog FromMandateDtoToTransactionLog(MandateDto mandate)
{
return new TransactionLog
{
RawData = ???,
};
}
}

授权服务:

public async Task<Mandate> Post(MandateDto mandate)
{
var mapper = new EntityMapper();
var mandate = mapper.FromMandateDtoToMandate(mandate);
var transaction = mapper.FromMandateDtoToTransactionLog(mandate);
try
{
await _unitOfWork.MandateRepository.Insert(mandate);
await _unitOfWork.TransactionRepository.Insert(transaction);
await _unitOfWork.SaveChangesAsync();
}
catch (Exception e)
{
throw new Exception(e.Message);
}
return mandate;
return transaction;
}

如前所述,委托书与交易日志有一对一的关系。由于委托书和交易日志数据将同时插入,我想将委托书中的DueDate、StartDate、EndDate自动插入交易日志的RawData中,作为JSON RawData:

RawData = ???

我该如何做到这一点?

感谢

您可以使用System.Text.Json中的JsonSerializer.Serialize方法来执行此操作。

你可以阅读此了解更多信息

最新更新