我有一个实体对象 student,它具有属性 StudentID 和 StudentName。我有一个部分班级学生,它使用一项服务来查找该学生当前的学校。一个 EntityDataSource 填满了网格就好了,学校接受。如果我观看网格的 RowDataBound 事件,我可以观看它转到 StudentModel.Designer.cs 并获取 StudentID 和 StudentName。但它没有得到学校。这是有道理的,因为学校不是实体对象的一部分 - 但是,我什至可以在使用 EntityDataSource 时获取学校自定义属性吗?
我一直在做一些研究,看来我需要使用 ContextCreating 事件来完成我的对象?
之前,我在 RowDataBound 事件期间添加了学校,但我希望能够对学校进行排序 - 这就是我试图解决这个问题的原因。
我不确定我是否接近解决方案......或者这根本无法完成,我应该在后面的代码中完成所有数据绑定?
这是代码:
<asp:EntityDataSource runat="server" ID="StudentGroupEntityDataSource"
ContextTypeName="GearUp.Data.StudentGroupEntities" OnContextCreating="StudentGroupEntityDataSource_ContextCreating" OnContextCreated="StudentGroupEntityDataSource_ContextCreated"
EnableFlattening="False" EnableDelete="True" EnableInsert="True" EnableUpdate="True"
EntitySetName="StudentGroupMembers"
OrderBy="it.FullName"
Where="it.GroupID IN {@ID}">
<WhereParameters>
<asp:ControlParameter DbType="Guid" Name="ID" ControlID="StudentGroupDropDown"
PropertyName="SelectedValue" />
</WhereParameters>
</asp:EntityDataSource>
public partial class StudentGroupMember
{
private string _school;
public string School
{
get
{
if (_school == null)
{
StudentServiceClient clientStudent = new StudentServiceClient();
var studentDetail = clientStudent.RetrieveStudentDetail(this.StudentID.ToString());
_school = studentDetail.SchoolName;
}
return _school;
}
}
}