【发布时间】:2022-01-02 19:25:24
【问题描述】:
我正在使用 ASP.NET Core Web API。我有这个代码:
视图模型(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 class TransactionDto
{
public string? RawData { get; set; }
}
实体映射器:
public class EntityMapper
{
public Mandate FromMandateDtoToMandate(MandateDto mandate)
{
Mandate mandate = new Mandate()
{
DueDate = mandate.DueDate,
StartDate = mandate.StartDate,
EndDate = mandate.EndDate
};
string jsonString = JsonSerializer.Serialize(mandate);
return mandate;
}
public TransactionLog FromMandateDtoToTransactionLog(TransactionDto mandate)
{
return new TransactionLog
{
RawData = jsonString,
};
}
}
授权服务:
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;
}
如 EntityMapper 所示,我想将 jsonString 从 FromMandateDtoToMandate 转移到 FromMandateDtoToTransactionLog 中,如下所示:
原始数据 = jsonString
我收到了这个错误:
错误 CS0103 当前上下文中不存在名称“jsonString”
我该如何解决这个问题?
谢谢。
【问题讨论】:
-
您的
FromMandateDtoToTransactionLog方法没有称为jsonString的参数/变量,所以这就是它无法编译的原因。 -
您的 jsonString 变量在另一个方法中声明,在您尝试访问它的地方不可用。您应该阅读有关变量范围的信息。
-
将
JsonSerializer.Serialize(mandate)移动到FromMandateDtoToTransactionLog;无论如何,你没有在FromMandateDtoToMandate中使用jsonString。 -
@MartinCostello - 我该怎么办?
-
@JohnathanBarclay - FromMandateDtoToTransactionLog 和 FromMandateDtoToMandate 有不同的模型。 jsonString 由在 FromMandateDtoToMandate 中完成的 Mandate 模型中的所有属性生成。
标签: c# asp.net-core asp.net-web-api