将更改保存到RIA服务中急切加载的关联
本文关键字:加载 关联 服务 保存 RIA | 更新日期: 2023-09-27 18:10:31
我在Silverlight应用程序的数据层使用RIA服务和实体框架。我有两个以多对一关系相关联的实体
public class Installation
{
[Key]
public string Serial { get; set; }
public string Description { get; set; }
[Column("District")]
public Guid? DistrictID { get; set; }
[Include]
[Association("InstallationDistrict", "DistrictID", "DistrictID")]
public District District { get; set; }
}
public partial class District
{
[Key]
public Guid DistrictID { get; set; }
public string DisplayName { get; set; }
}
我使用EF Code First为我的实体。
服务代码:
[EnableClientAccess]
public class EagerLoadingService : DomainService
{
private readonly CentralContext _context;
public EagerLoadingService()
{
_context = new CentralContext();
}
[Query]
public IQueryable GetInstallations()
{
return _context.Installations.Include("District");
}
[Update]
public void UpdateInstallation(Installation i)
{
_context.Installations.Find(i.Serial).District = i.District;
_context.SaveChanges();
}
[Query]
public IQueryable GetDistricts()
{
return _context.Districts;
}
}
加载安装时,我包括相关的区域,它工作得很好(我在客户端获得实体)。但是,当我更改客户端上的District并尝试更新时,实体和服务上下文上的HasChanged标志仍然为false,并且关联的外键没有更改(安装记录上的DistrictID)。
是否有一种方法可以让它按照我期望的方式工作?
原来我做的关联属性不正确。必须是
[Association("InstallationDistrict", "DistrictID", "DistrictID", IsForeignKey = true)]