0

我正在使用 RIA 服务 SP2 和实体框架 5(从现有数据库生成),但是当我传递一个实体对象并引用另一个实体对象时,我没有得到引用的对象。我正在实体框架端执行 .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 基于实体的 RIA 服务无法反序列化关联实体

暴露 ria 服务中的关联实体

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

当前技术:

Silverlight 5、Entity Framework 5(DbContext,不是 ObjectContext)和 Ria Services SP2

欢迎所有和任何想法!

编辑 这里是 RIA 服务调用:

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

1 回答 1

0

事实证明,我需要将元数据类移动到与它提供元数据的类相同的命名空间。就我而言,我必须将 ProfileValue 实体所在的“DataAccess.EntityModels.MetaData”更改为“DataAccess.EntityModels”。这个问题没有引发错误,也没有提供关于它为什么无法序列化引用实体的信息。浪费了好几个小时……:P

于 2013-07-19T20:33:48.523 回答