Breeze Don';如果元素已经存在,则不允许用户添加元素(即使标记为setDeleted)
我在asp.net项目中使用Breeze 我有一个实体(传输),其中包含另一个实体(LinkedTransport) 我有一个页面,允许用户为我的传输添加/删除一些LinkedTransport。当用户单击特定linkedTransport的“删除”按钮时,它会被标记为已删除,但只有在调用Breeze Don';如果元素已经存在,则不允许用户添加元素(即使标记为setDeleted),breeze,durandal,Breeze,Durandal,我在asp.net项目中使用Breeze 我有一个实体(传输),其中包含另一个实体(LinkedTransport) 我有一个页面,允许用户为我的传输添加/删除一些LinkedTransport。当用户单击特定linkedTransport的“删除”按钮时,它会被标记为已删除,但只有在调用datacontext.saveChanges()时,它才会真正被删除。用户仍然可以点击cancel,然后我调用datacontext.cancelChanges() 每个linkedTransport必须是唯
datacontext.saveChanges()时,它才会真正被删除代码>。用户仍然可以点击cancel,然后我调用datacontext.cancelChanges()
每个linkedTransport必须是唯一的。我的意思是我不能加两次元素123
每次用户尝试添加linkedTransport时,我都会遍历所有linkedTransport并检查它是否还不存在。在大多数情况下,它工作得相当好
我的问题:下面的案例有问题:
- 删除元素123
- (在保存更改之前,删除不会提交)
- 添加元素123
因为元素被删除了(实际上是setDeleted,但不是committed服务器端),我没有检测到他的存在客户端,然后add出错,因为密钥已经存在
我希望你明白我的意思
在允许用户添加之前,您知道如何循环所有LinkedTransport(甚至已删除)以检查它是否已经存在吗
以下是我的课程:
public class Transport
{
[Key]
public int Id { get; set; }
...
public virtual List<LinkedTransport> LinkedTransports { get; set; }
}
public class LinkedTransport
{
[Key, Column(Order = 0)]
public int TransportId { get; set; }
[Key, Column(Order = 1)]
public int TransportRelatedId { get; set; }
public virtual Transport Transport { get; set; }
public virtual Transport TransportRelated { get; set; }
}
谢谢。我想我可以用删除的传输来补充搜索列表,例如
var transports = transport().linkedTransports();
for (var i = transports.length; i-- >= 0){
if (transports[i].RelatedTransportId() == transpRelatedId) {
alert('Already present!');
return false;
}
}
var deleted = manager.getEntities(transportType, breeze.EntityState.Deleted);
for (i = deleted.length; i-- >= 0){
if (deleted[i].id() == transpRelatedId) {
alert('Was deleted!');
return false;
}
}
var transports=transport().linkedTransports();
对于(变量i=传输长度;i-->=0){
if(transports[i].RelatedTransportId()==TransportRelatedId){
警报(“已存在!”);
返回false;
}
}
var deleted=manager.getEntities(transportType,breeze.EntityState.deleted);
对于(i=deleted.length;i-->=0){
if(已删除[i].id()==transpRelatedId){
警报('已删除!');
返回false;
}
}
正是我需要的。谢谢
var transports = transport().linkedTransports();
for (var i = transports.length; i-- >= 0){
if (transports[i].RelatedTransportId() == transpRelatedId) {
alert('Already present!');
return false;
}
}
var deleted = manager.getEntities(transportType, breeze.EntityState.Deleted);
for (i = deleted.length; i-- >= 0){
if (deleted[i].id() == transpRelatedId) {
alert('Was deleted!');
return false;
}
}