通过RIA服务包括相关实体

时间:2013-07-16 21:27:02

标签: c# entity-framework-5 silverlight-5.0 wcf-ria-services

我正在使用RIA服务SP2和实体框架5(从现有数据库生成),但是当我传递一个带有对另一个实体对象的引用的实体对象时,我没有得到引用的对象。我在实体框架端执行.Include,并在引用的实体上放置“Include”属性。我的课程看起来与此相似:

[MetadataTypeAttribute(typeof(ProfileValue.ProfileValueMetadata))]
public partial class ProfileValue
{
    internal class ProfileValueMetadata
    {
        private ProfileValueMetadata()
        {
        }

        [Key]
        public int ValueID { get; set; }

        public int ItemID { get; set; }

        [Include]
        [Composition]
        [Association("ProfileValue_ProfileItem", "ItemID", "ItemID")]
        public virtual ProfileItem ProfileItem { get; set; }

        public string Value { get; set; }
    }
}

[MetadataTypeAttribute(typeof(ProfileItem.ProfileItemMetadata))]
public partial class ProfileItem
{

    internal class ProfileItemMetadata
    {
        private ProfileItemMetadata()
        {
        }
        public string Description { get; set; }

        [Key]
        public int ItemID { get; set; }

        [Include]
        public ICollection<ProfileValue> ProfileValues { get; set; }

        public string Type { get; set; }
    }
}

此外,ProfileItem和Profile Value都有CRUD方法,将相应的实体暴露给客户端。暂时,我只是试图查询配置文件值,使用各自的ProfileItem来到客户端。调用db.ProfileValues.Include(“ProfileItem”)并对此进行ToList为我提供了两个实体,看起来RIA似乎无法在某处包含它们。

我看过:

POCO entity-based RIA service can't de-serialize associated entities

exposing Associated entities in ria services

甚至是这里引用的所有内容: Include() in EF4 using RIA Services Domain Service not loading!

当前技术:

Silverlight 5,实体框架5(DbContext,而不是ObjectContext)和Ria Services SP2

欢迎所有人和任何想法!

修改 这是RIA服务电话:

    [Query(IsDefault = true)]
    public IQueryable<ProfileValue> GetProfileValues()
    {
        return db.ProfileValues.Include("ProfileItem");
    }

1 个答案:

答案 0 :(得分:0)

事实证明,我需要将元数据类移动到与提供元数据的类相同的名称空间。在我的情况下,我不得不从“DataAccess.EntityModels.MetaData”更改为ProfileValue实体所在的“DataAccess.EntityModels”。此问题没有出现任何错误,并且未提供有关未能序列化引用实体的原因的信息。浪费时间......:P