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服务不像我期望的那样填充引用实体。