Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迁移breeze 1.4.2后导航属性不再工作_Breeze_Durandal - Fatal编程技术网

迁移breeze 1.4.2后导航属性不再工作

迁移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

我使用带有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
{
    [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; }
}
那么我就不能再得到我的相关运输工具了!my
SendRecv
实体中名为
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类更新原始帖子吗?你确定你的模型本身没有改变吗?我认为这不应该是微风的问题。一定要查看数据库表,看看它们是否也正常。