集合到达客户端时为空
我的一个实体有一个 EntitySet<>具有[组合]、[包含]和[关联]属性的属性。我在域服务中填充此集合,但当我在客户端收到它时检查其内容时,该集合为空。
我正在使用 Silverlight 4 RTM 以及 RIA Services 1.0 RTM。
有什么想法我做错了吗?
这是我的服务端的代码:
public class RegionDto
{
public RegionDto()
{
Cities = new EntitySet<CityDto>();
}
[Key]
public int Id { get; set; }
public string Name { get; set; }
[Include]
[Composition]
[Association("RegionDto_CityDto", "Id", "RegionId")]
public EntitySet<CityDto> Cities { get; set; }
}
public class CityDto
{
[Key]
public int Id { get; set; }
public int RegionId { get; set; }
public string Name { get; set; }
}
[EnableClientAccess()]
public class RegionDomainService : LinqToEntitiesDomainService<RegionEntities>
{
public IEnumerable<RegionDto> GetRegions()
{
var regions = (ObjectContext.Regions
.Select(x => new RegionDto
{
Id = x.ID,
Name = x.Name
})).ToList();
foreach (var region in regions)
{
var cities = (ObjectContext.Cities
.Where(x => x.RegionID == region.Id)
.Select(x => new CityDto
{
Id = x.ID,
Name = x.Name
})).ToList();
foreach (var city in cities)
{
region.Cities.Add(city);
}
}
// each region's Cities collection is populated at this point
// however when the client receives it, the Cities collections are all empty
return regions;
}
}
One of my entities has an EntitySet<> property with [Composition], [Include] and [Association] attributes. I populate this collection in my domain service but when I check its contents when it is received on the client, the collection is empty.
I am using Silverlight 4 RTM as well as RIA Services 1.0 RTM.
Any ideas what I am doing wrong?
Here is the code on my service side:
public class RegionDto
{
public RegionDto()
{
Cities = new EntitySet<CityDto>();
}
[Key]
public int Id { get; set; }
public string Name { get; set; }
[Include]
[Composition]
[Association("RegionDto_CityDto", "Id", "RegionId")]
public EntitySet<CityDto> Cities { get; set; }
}
public class CityDto
{
[Key]
public int Id { get; set; }
public int RegionId { get; set; }
public string Name { get; set; }
}
[EnableClientAccess()]
public class RegionDomainService : LinqToEntitiesDomainService<RegionEntities>
{
public IEnumerable<RegionDto> GetRegions()
{
var regions = (ObjectContext.Regions
.Select(x => new RegionDto
{
Id = x.ID,
Name = x.Name
})).ToList();
foreach (var region in regions)
{
var cities = (ObjectContext.Cities
.Where(x => x.RegionID == region.Id)
.Select(x => new CityDto
{
Id = x.ID,
Name = x.Name
})).ToList();
foreach (var city in cities)
{
region.Cities.Add(city);
}
}
// each region's Cities collection is populated at this point
// however when the client receives it, the Cities collections are all empty
return regions;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的。问题是我的域服务在实例化 CityDto 类时没有设置它们的 RegionID 属性。因此,即使将城市放入 RegionDto 的集合中,客户端上的 RIA 服务也无法将关联拼凑在一起。
将我的域服务更改为此解决了问题。
Ok. The problem was the my domain service wasn't setting the RegionID property of the CityDto classes when it instantiated them. So even tho it was putting the cities into the RegionDto's collection, RIA Services on the client couldn't piece the assocation together.
Changing my domain service to this fixed the problem.