将更改保存到RIA服务中急切加载的关联

时间:2011-10-03 17:54:32

标签: c# entity-framework-4.1 wcf-ria-services

我正在使用带有Entity Framework的RIA Services来处理Silverlight应用程序的数据层。我有两个以多对一关系相关的实体


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;
    }
}

加载安装时,我包含相关的区域,该区域正常工作(我在客户端获取实体)。但是,当我更改客户端上的区域并尝试更新时,实体和服务上下文中的HasChanged标志仍为false,并且关联的外键不会更改(安装记录上的DistrictID)。

有没有办法让我按照我期望的方式工作?

1 个答案:

答案 0 :(得分:1)

原来我正在做的关联属性不正确。它必须是


[Association("InstallationDistrict", "DistrictID", "DistrictID", IsForeignKey = true)]

感谢this guide将其指出。