1
我正在將RIA Services與實體框架用於我的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代碼第一次對我的實體在一個多到一的關係相關的實體。
下面是服務的代碼:
[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,並且關聯的外鍵不會更改(安裝記錄上的區域ID)。
有沒有辦法讓我的工作方式,我期待它?
可能由於某些原因,這些區域正在分離。檢查您嘗試保存的EntityState。 – alf
EntityState未修改。也許這與我設置實體的方式有關。我將更新並添加一些關於實體類的更多細節。 –
也許驗證失敗,您正在修改的字段。嘗試打開服務生成的代碼文件(Generated_Code文件夾)並在setter中爲該屬性設置一個斷點。 – alf