1

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

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

在我自动生成的 edmx 中,GroupToEquipment 实体永远不会出现,并且显示了直接从 Equipment 到 Group 的关联。到目前为止,一切都很好。

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

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

并在“DomainService.cs”中添加了一个 .Include("Booking")

public IQueryable<Equipment> GetEquipment()
{
   return this.ObjectContext.Equipment.Include("Booking");
}

这很完美,并且在查询设备时会加载对所有预订的引用!但是我如何必须为 n:m Group-association 采用这个?

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

    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; }
    }
}

这在 DomainService 中:

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

代码编译得很好,但在查询设备后没有对组的引用...... :-(

我究竟做错了什么?很确定这对于知道的人来说只是一个小问题......

最好的问候,弗洛。

4

1 回答 1

0

很抱歉,WCF Ria 不支持 m:n 关系!从更多信息中查看Nikhil kotary 答案

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

如果不能忍受这个选项,并且更喜欢添加对其他代码的依赖,请查看m2mria on codeplex,我已经在非常基本的场景中尝试过它并且它有效

希望这会有所帮助,
马可

于 2012-09-25T05:29:18.350 回答