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