C# Breeze-如何在保存更改调用之前处理同一视图中两个实体的状态
我有3个实体C# Breeze-如何在保存更改调用之前处理同一视图中两个实体的状态,c#,javascript,angularjs,breeze,C#,Javascript,Angularjs,Breeze,我有3个实体项目,附件和消息。项目可以有多个附件和消息 问题是在项目详细视图上,我列出了它的消息和附件(如果有),或者允许用户添加新附件并发布新消息。这是我的视图的快照 一旦用户添加了新附件,即通过管理器创建的新附件实体,并在上传文件后,立即将更改保存到服务器。但在项目详细视图呈现之前,我还为消息创建了一个新实体,当创建附件实体并调用保存更改时,该实体会抛出验证错误,这是有意义的。那么,我将如何处理这两个实体的状态呢?这是我的密码 模型类 Project.cs Public class Pro
项目
,附件
和消息
。项目可以有多个附件和消息
问题是在项目详细视图上,我列出了它的消息和附件(如果有),或者允许用户添加新附件并发布新消息。这是我的视图的快照
一旦用户添加了新附件,即通过管理器创建的新附件实体,并在上传文件后,立即将更改保存到服务器。但在项目详细视图呈现之前,我还为消息创建了一个新实体,当创建附件实体并调用保存更改时,该实体会抛出验证错误,这是有意义的。那么,我将如何处理这两个实体的状态呢?这是我的密码
模型类
Project.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 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.
});
}
本质上,这将只调用附件对象上的保存更改,并忽略消息中的验证错误 附件和messagesNo之间是否存在任何关系。它们中的每一个都与ProjectId有关系ProjectId是两个表的外键如果保存邮件和附件实体意味着您需要ProjectId验证错误显示与邮件相关。因为创建了新的消息实体get,当我调用save更改时,它需要不可为空的消息。你能把问题再读一遍吗?你能把3个实体类文件发送过来吗?请回答这个问题。我在努力寻找一个如何保存一条记录的例子
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.
});
}