迁移breeze 1.4.2后导航属性不再工作
我使用带有Durandal和breeze模板的asp.net mvc 我有以下代码第一类: 第一种情况:迁移breeze 1.4.2后导航属性不再工作,breeze,durandal,Breeze,Durandal,我使用带有Durandal和breeze模板的asp.net mvc 我有以下代码第一类: 第一种情况: public class Transport { [Key] public int Id { get; set; } ... public int? SenderId { get; set; } public virtual SendRecv Sender { get; set; } } public class SendRecv { [Ke
public class Transport
{
[Key]
public int Id { get; set; }
...
public int? SenderId { get; set; }
public virtual SendRecv Sender { get; set; }
}
public class SendRecv
{
[Key]
public int Id { get; set; }
...
public virtual List<Transport> Transports { get; set; }
}
public class Transport
{
[Key]
public int Id { get; set; }
...
public int? SenderId { get; set; }
public int? ReceiverId { get; set; }
public virtual SendRecv Sender { get; set; }
public virtual SendRecv Receiver { get; set; }
}
问题:我在我的Transport
实体中添加了对同一实体SendRecv
的新引用,如下所示:
第二种情况:
public class Transport
{
[Key]
public int Id { get; set; }
...
public int? SenderId { get; set; }
public virtual SendRecv Sender { get; set; }
}
public class SendRecv
{
[Key]
public int Id { get; set; }
...
public virtual List<Transport> Transports { get; set; }
}
public class Transport
{
[Key]
public int Id { get; set; }
...
public int? SenderId { get; set; }
public int? ReceiverId { get; set; }
public virtual SendRecv Sender { get; set; }
public virtual SendRecv Receiver { get; set; }
}
那么我就不能再得到我的相关运输工具了!mySendRecv
实体中名为transport
的导航属性已不存在。
这已经不起作用了:
if (sendRecvs()[i].transports().length > 0)
{
...
}
附言:我很确定这在breeze迁移到1.4.2之前是有效的
有什么想法吗
谢谢。我假设您只需要SendRecv中的一个传输集合。 如果是,请尝试以下方法(使用fluent API):
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder){
modelBuilder.Entity()
.HasMany(c=>c.Transports)
.WithRequired(c=>c.Sender)
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasMany(c=>c.Transports)
.WithRequired(c=>c.Receiver)
.WillCascadeOnDelete(假);
}
现在,如果您想要两个传输列表(即Transports1和Transports2),请尝试:
protected override void OnModelCreating(DbModelBuilder modelBuilder) {
modelBuilder.Entity<SendRecv>()
.HasMany(c => c.Transports1)
.WithRequired(c => c.Sender)
.WillCascadeOnDelete(false);
modelBuilder.Entity<SendRecv>()
.HasMany(c => c.Transports2)
.WithRequired(c => c.Receiver)
.WillCascadeOnDelete(false);
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder){
modelBuilder.Entity()
.HasMany(c=>c.Transports1)
.WithRequired(c=>c.Sender)
.WillCascadeOnDelete(假);
modelBuilder.Entity()
.HasMany(c=>c.Transports2)
.WithRequired(c=>c.Receiver)
.WillCascadeOnDelete(假);
}
是否正在使用扩展
?是.expand('transports')
因此-如果您对Breeze对象的备份存储进行console.log,该属性是否显示为null?我不确定这是否会起作用。或者它根本不存在?此属性传输
不再列出!Caps敏感度不是问题,因为如果我播放上面描述的第一个场景,它就可以工作了。您能用当前使用的Transport和SendRecv类更新原始帖子吗?你确定你的模型本身没有改变吗?我认为这不应该是微风的问题。一定要查看数据库表,看看它们是否也正常。