1
我試圖在實體框架後端使用RIA服務。模型由設計者自動生成。 (VS 2010,.NET 4.0,EF 4.0,SilverLight 4.0) 我遇到的問題是引用屬性按預期在服務層加載,但是當這些信息傳遞給SilverLight應用程序時,引用實體變爲NULL。RIA服務:實體框架參考實體
我用兩種方法來填充參考實體:
public Employee GetEmployeeByID(int employeeID)
{
var result = this.ObjectContext.Employees
.Include("EmployeeRoles")
.Where(emp => emp.EmployeeID == employeeID)
.FirstOrDefault();
return result;
}
而且
public Employee GetEmployeeByID(int employeeID)
{
var result = this.ObjectContext.Employees
.Where(emp => emp.EmployeeID == employeeID)
.FirstOrDefault();
if (result != null && result.EmployeeRoleReference.IsLoaded == false)
{
result.EmployeeRoleReference.Load();
}
return result;
}
兩種方法出現之前返回檢查對象時正確填充參考對象。 但是,當我嘗試通過RIA服務從UI引用Employee對象時,EmployeeRole引用的實體爲NULL。
在前端我打電話:
public void LoadEmployeeProfile()
{
int empID = WebContext.Current.User.EmployeeID;
LoadOperation<Employee> loadEmployee = _appcontext.Load(_appContext.GetEmployeeByIDQuery(empID));
loadEmployee.Complete += new System.EventHandler(loadEmployee_Completed);
}
void LoadEmployee_Completed(object sender, System.EventArgs e)
{
LoadOperation<Employee> loadEmployee = sender as LoadOperation<Employee>;
if (loadEmployee == null)
return;
loadEmployee.Completed -= LoadEmployee_Completed;
foreach (Employee employee in loadEmployee.Entities)
{
this.EmployeeProfile == employee;
break;
}
}
這似乎是所有的教科書式的東西,但我一直沒能追下去鉛,爲什麼RIA服務不像我期望的那樣填充引用實體。