簡體   English   中英

EFPersistenceManager.saveChanges之后缺少“ $ id”“ $ type”

[英]“$id” “$type” missed after EFPersistenceManager.saveChanges

我在aulrelia項目中使用微風和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
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM