"$id" "$type" 在 EFPersistenceManager.saveChanges 之后错过了



我在aulrelia项目中使用breeze和aspnetcore。 当我创建新记录(A(并将其保存到数据库时,一切正常,但是当我继续创建记录(B(保存时,控制器仍然从前端接收记录A,然后 我调试并与另一个也使用微风的aspnet项目进行了比较。它向我显示键杆退出,我想它应该会影响前端微风以确定记录 A 是否被保存,也许这就是为什么当我尝试保存记录 B 时,控制器仍然得到记录 A 的原因。

我的控制器:

[Produces("application/json")]
[Route("breeze/[controller]/[action]")]
[BreezeQueryFilter]
public class JumpstartController : Controller
{
private readonly IUnitOfWork _uitOfWork;
public JumpstartController(IUnitOfWork uitOfWork)
{
_uitOfWork = uitOfWork;
}
......
[HttpPost]
[AllowAnonymous]
public SaveResult SaveChanges([FromBody] JObject saveBundle)
{
return _uitOfWork.Commit(saveBundle);
}

工作单位:

readonly EFPersistenceManager<JumpstartEntities> _persistenceManager =
new EFPersistenceManager<JumpstartEntities>();
// private readonly JumpstartContextProvider _contextProvider;
/// <summary>
/// ctor
/// </summary>
public UnitOfWork()
{
TenantRepository = new Repository<Tenant>(_persistenceManager.Context);
}
/// <summary>
/// Reporitories
/// </summary>
public IRepository<Tenant> TenantRepository { get; private set; }

/// <summary>
/// Get breeze Metadata
/// </summary>
/// <returns>String containing Breeze metadata</returns>
public string Metadata()
{
return _persistenceManager.Metadata();
}
/// <summary>
/// Save a changeset using Breeze
/// </summary>
/// <param name="changeSet"></param>
/// <returns></returns>
public SaveResult Commit(JObject changeSet)
{
return _persistenceManager.SaveChanges(changeSet);
}

我们需要使用 JsonSerializationFns,它从轻而易举地序列化结果,它会添加关键字。

mvcBuilder.AddJsonOptions(opt => {
var ss = JsonSerializationFns.UpdateWithDefaults(opt.SerializerSettings);
var resolver = ss.ContractResolver;
if (resolver != null) {
var res = resolver as DefaultContractResolver;
res.NamingStrategy = null;  // <<!-- this removes the camelcasing
}

相关内容

最新更新