2013-05-07 25 views
0

我已经安装了Breeze 1.3.2的最新版本继承支持。 我与关联双向分层类:微风分层类错误“集合导航属性不能设置。”

public abstract class HClass 
{   
    public HClass() 
    { 
     Children = new List<HClass>(); 
    } 
    [Key] 
    public int Id { get; set; } 
    public Nullable<int> ParentId { get; set; } 
    public string Name { get; set; } 

    public virtual ICollection<HClass> Children { get; set; } 
    public virtual HClass Parent { get; set; } 
} 

我有其他类与继承:

public class AClass : HClass 
{ 
    public string Observation { get; set; } 
} 

public class BClass : HClass 
{ 
    public int Number { get; set; } 
} 

的的DbContext在服务器中:

public DbSet<AClass> Projects { get; set; } 
public DbSet<BClass> OtherProjects { get; set; } 

服务器侧控制器的方法:

[HttpGet] 
    public ICollection<AClass> Projects() 
    { 
     ICollection<AClass> projects = new List<AClass>(); 
     AClass pro1 = new AClass(); AClass pro2 = new AClass(); AClass pro3 = new AClass(); AClass pro4 = new AClass(); 
     pro1.Id = 1; 
     pro1.Name = "Project 1"; 
     pro1.Observation = "Main"; 
     pro2.Id = 2; 
     pro2.Name = "Project 2"; 
     pro2.Observation = "Main"; 
     pro3.Id = 3; 
     pro3.Name = "Sub Project 3"; 
     pro3.ParentId = 1; 
     pro3.Parent = pro1; 
     pro4.Id = 4; 
     pro4.Name = "Sub Project 4"; 
     pro4.ParentId = 1; 
     pro4.Parent = pro1; 
     pro1.Children.Add(pro3); 
     pro1.Children.Add(pro4); 
     projects.Add(pro1); 
     projects.Add(pro2); 
     return projects; 
    } 

“项目”中的每个项目都设置了“父项目”和“子项目”项目和方法项目返回分层组合。

但我有下一个错误Collection navigation properties may NOT be set.。当我查询:

return entityQuery.from('Projects') 
      .using(manager).execute() 
      .then(success) 
      .fail(queryFailed); 

的错误是在breeze.debug.js

function updateRelatedEntity(relatedEntity, targetEntity, navigationProperty) { 
    if (!relatedEntity) return; 
    var propName = navigationProperty.name; 
    var currentRelatedEntity = targetEntity.getProperty(propName); 
    // check if the related entity is already hooked up 
    if (currentRelatedEntity !== relatedEntity) { 
     // if not hook up both directions. 
     targetEntity.setProperty(propName, relatedEntity); //Error here 
     var inverseProperty = navigationProperty.inverse; 
     if (!inverseProperty) return; 
     if (inverseProperty.isScalar) { 
      relatedEntity.setProperty(inverseProperty.name, targetEntity); 
     } else { 
      var collection = relatedEntity.getProperty(inverseProperty.name); 
      collection.push(targetEntity); 
     } 
    } 
} 

当我使用HClass,招展工作完美,但是当我使用AClassBClass与传承出现错误。

我已经更新到1.3.3微风,但错误依然存在

请帮我这个错误,任何建议都欢迎。

+0

你什么时候遇到这个错误?当你在查询或者当你试图在客户端添加实体时?更多的细节会很棒。 – 2013-05-08 02:08:32

+0

感谢您的时间和兴趣。我查询时发生错误。 – kuskunko 2013-05-08 13:42:01

+0

您的查询是针对“项目”的?你是说当“项目”返回“HClass”的时候,但是当它返回“AClass”时它失败了?和..你可以显示服务器端控制器的方法吗? – 2013-05-08 16:13:15

回答

1

我们无法重现您的错误,所以您可以给breeze.ideablade.com(与Attn:Jay Traband中某处的电子邮件地址)显示错误的“小”测试用例发送电子邮件。如果您需要一个地方开始,Breeze zips中的最新DocCode示例有一个“Inheritance.sdf”数据库和一个与您的类似的InheritanceController类。

+0

感谢您的关注,我发送了一封电子邮件至[email protected],主题为:“Attn:Jay Traband:请帮助我:Breeze阶层式错误。” – kuskunko 2013-05-16 20:17:18

+0

我回顾了最新的DocCode,唯一的区别在于服务器端控制器方法,例如我的方法“Projects”返回了“AClass”的集合,但是每个项目都设置了“Parent”和“Children”(因为我需要那)。 – kuskunko 2013-05-18 17:32:48

+0

我根据你的例子重现了一个错误。 – Ward 2013-05-22 01:10:30