gpt4 book ai didi

c# - Breeze - 如何在保存更改调用之前处理同一 View 中两个实体的状态

转载 作者:行者123 更新时间:2023-11-29 14:51:43 25 4
gpt4 key购买 nike

我有 3 个实体 ProjectAttachmentMessages。项目可以有多个附件和消息。

问题出在项目详细信息 View 上,我列出了它的消息和附件(如果有)或允许用户添加新附件和发布新消息。这是我的观点的快照

https://www.dropbox.com/s/9dfddv9oa7wo8rk/view.PNG

一旦用户添加新附件,通过管理器创建新的附件实体并在文件上传后,立即调用服务器保存更改。但是在项目详细 View 呈现之前,我还为消息创建了一个新实体,它在创建附件实体并调用保存更改时抛出验证错误,这很有意义。那么,我将如何处理这两个实体的状态?这是我的代码

模型类

项目.cs

Public class Project
{
public int Id { get; set; }

[Required, MaxLength(50)]
public string Title { get; set; }

[Required, StringLength(2000, ErrorMessage = "Enter {0} between {1} to {2} characters long", MinimumLength = 300)]
public string Description { get; set; }

[Required, Range(10, 10000)]
public int Budget { get; set; }

[Required]
public DateTime Created { get; set; }

public ICollection<Attachment> Attachment { get; set; }
public ICollection<Messages> Messages { get; set; }

}

消息.cs

 public class Messages
{
public int Id { get; set; }
public int ProjectId { get; set; }

[Required]
public string Text { get; set; }
public Project Project { get; set; }
}

附件.cs

 public class Attachment
{
public int Id { get; set; }
public int ProjectId { get; set; }
public string Name { get; set; }
public string Path { get; set; }
public Project Project { get; set; }
}

Controller.js

 function activate() {

getNewMessage();
common.activateController([getProject()], controllerId)
.then(function () {

});
}

function addNewAttachment(file) {

var attachment = datacontext.createNewAttachment();
//other stuff

return datacontext.save()
.then(function () {


});
}



function getNewMessage() {
vm.message = datacontext.createNewMessage();
}

datacontext.js

  function createNewMessage() {

return manager.createEntity('Messages');
}


function createNewAttachment() {
return manager.createEntity('Attachment');
}

最佳答案

如果您想在不保存邮件的情况下创建附件,您可以这样做 -

function attachOnly(attachment) {
// Put the attachment in an array to pass to your entity manager
var entitiesToSave = [attachment];

// em is your entity manager
em.saveChanges(entitiesToSave).then(function(saveResult) {
// save was successful
}).fail(function (e) {
// e is any exception that was thrown.
});
}

本质上,这将您的附件对象调用保存更改,并忽略消息中的验证错误。

关于c# - Breeze - 如何在保存更改调用之前处理同一 View 中两个实体的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24675655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com