Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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
C#如何在RIA域服务中处理n:m关联中的导航属性?_C#_Silverlight_Associations_Wcf Ria Services_Domainservices - Fatal编程技术网

C#如何在RIA域服务中处理n:m关联中的导航属性?

C#如何在RIA域服务中处理n:m关联中的导航属性?,c#,silverlight,associations,wcf-ria-services,domainservices,C#,Silverlight,Associations,Wcf Ria Services,Domainservices,在Silverlight5/RIA Services应用程序中,我在一个非常简单的数据库上构建了一个域服务: 预订n:1设备1:n组设备n:1组 在我的自动生成的edmx中,永远不会显示GroupToEquipment实体,并且会显示直接从设备到组的n:m关联。到目前为止还不错 为了在我的DomainService中获得设备对1:n关联预订的引用,我必须在“DomainService.metadata.cs”中插入[Include]和[Association…] [包括] [协会(“FK\U预订

在Silverlight5/RIA Services应用程序中,我在一个非常简单的数据库上构建了一个域服务:

预订n:1设备1:n组设备n:1组

在我的自动生成的edmx中,永远不会显示GroupToEquipment实体,并且会显示直接从设备到组的n:m关联。到目前为止还不错

为了在我的DomainService中获得设备对1:n关联预订的引用,我必须在“DomainService.metadata.cs”中插入[Include]和[Association…]

[包括]
[协会(“FK\U预订设备”、“设备ID”、“设备ID”)]
公共实体集合预订{get;set;}
并在“DomainService.cs”中添加了一个.Include(“预订”)

public IQueryable GetEquipment()
{
返回此.ObjectContext.device.Include(“预订”);
}
这非常有效,查询设备时会加载所有预订的参考!但是我怎么才能在n:m集团协会中采用这个呢

下面的代码是我随后在“DomainService.metadata.cs”中另外尝试的代码:

内部密封类设备元数据
{
//元数据类并不意味着要实例化。
专用设备元数据()
{
}
[包括]
[协会(“FK\U预订设备”、“设备ID”、“设备ID”)]
公共实体集合预订{get;set;}
公共Guid设备ID{get;set;}
[包括]
[协会(“GroupToEquipment”、“EquipmentId”、“GroupId”)]
公共EntityCollection组{get;set;}
公共字符串名称{get;set;}
}
}
在域名服务中:

    public IQueryable<Equipment> GetEquipment()
    {
        return this.ObjectContext.Equipment.Include("Booking").Include("Group");
    }
public IQueryable GetEquipment()
{
返回此.ObjectContext.Equipment.Include(“预订”).Include(“集团”);
}
代码编译良好,但在查询设备后没有对组的引用…:-(

我做错了什么?我敢肯定这对知道

致以最良好的祝愿,
Flo.

很抱歉,WCF Ria不支持m:n关系!请参阅更多信息中的Nikhil kotary回答

我建议您创建一个m:n类并手动处理该关系,换句话说,您必须将GroupToEquipment实体从db公开给edmx,从edmx公开给WCF Ria

如果不能忍受这个选项,并且更喜欢添加对其他代码的依赖,请看一看,我已经在非常基本的场景中尝试过了,并且成功了

希望这有帮助,

马可

你找到预订的参考资料了吗?我试着做两件事:1)运行Fiddle2,查看WCF Silverlight下返回的内容2)删除[Association]-我从来不需要包括预订参考资料。如果我删除[Association],编译将失败……感谢您提供的信息。同时,我在解决方案的服务器端进行了所需的增强,并通过域服务发送过滤结果集。
public IQueryable<Equipment> GetEquipment()
{
   return this.ObjectContext.Equipment.Include("Booking");
}
    internal sealed class EquipmentMetadata
    {

        // Metadata classes are not meant to be instantiated.
        private EquipmentMetadata()
        {
        }

        [Include]
        [Association("FK_Booking_Equipment", "EquipmentId","EquipmentId")]
        public EntityCollection<Booking> Booking { get; set; }

        public Guid EquipmentId { get; set; }

        [Include]
        [Association("GroupToEquipment", "EquipmentId", "GroupId")]
        public EntityCollection<Group> Group { get; set; }

        public string Name { get; set; }
    }
}
    public IQueryable<Equipment> GetEquipment()
    {
        return this.ObjectContext.Equipment.Include("Booking").Include("Group");
    }