ASP.NET Core Web API - 如何将属性组合作为原始数据存储到另一个模型的单个列中
ASP.NET Core Web API - How to store combination of attributes as raw data into a single column of another Model
我正在使用 ASP.NET Core 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; }
}
模型:Mandate 和 TransactionLog
Mandate 与 TransactionLog 是一对一的关系
授权Table
- 编号
- 截止日期
- 开始日期
- 结束日期
事务日志
- MandateId(键)
- 原始数据
视图模型(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; }
}
实体映射器:
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;
}
如前所述,Mandate 与 TransactionLog 具有一对一的关系。
由于同时插入 Mandate 和 TransactionLog 数据,我想自动将 DueDate、StartDate、EndDate 从 Mandate 插入到 TransactionLog 的 RawData 中,如 JSON RawData:
RawData = ???
如何实现?
谢谢
您可以使用 System.Text.Json
中的 JsonSerializer.Serialize
方法来做到这一点。
您可以阅读 this 了解更多信息
我正在使用 ASP.NET Core 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; }
}
模型:Mandate 和 TransactionLog
Mandate 与 TransactionLog 是一对一的关系
授权Table
- 编号
- 截止日期
- 开始日期
- 结束日期
事务日志
- MandateId(键)
- 原始数据
视图模型(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; }
}
实体映射器:
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;
}
如前所述,Mandate 与 TransactionLog 具有一对一的关系。 由于同时插入 Mandate 和 TransactionLog 数据,我想自动将 DueDate、StartDate、EndDate 从 Mandate 插入到 TransactionLog 的 RawData 中,如 JSON RawData:
RawData = ???
如何实现?
谢谢
您可以使用 System.Text.Json
中的 JsonSerializer.Serialize
方法来做到这一点。
您可以阅读 this 了解更多信息