Asp.net 在所选数据源上找不到名为的字段或属性
我有一个实体数据模型,其中有两个实体“角色”和“用户”。我有EntityDataSource和GridView中的导航属性。EntityDataSource指向用户实体,并具有Include=“Roles”参数 我在GridView中添加了一个BoundField,它指向RoleName,这是实体角色的一个属性。然而,当我执行代码时,我得到了上面的错误 我在另一个应用程序中成功地使用了非常类似的代码。你知道为什么这样不行吗 这是我的EntityDataSource:Asp.net 在所选数据源上找不到名为的字段或属性,asp.net,vb.net,entity-framework,entity-framework-4,linq-to-entities,Asp.net,Vb.net,Entity Framework,Entity Framework 4,Linq To Entities,我有一个实体数据模型,其中有两个实体“角色”和“用户”。我有EntityDataSource和GridView中的导航属性。EntityDataSource指向用户实体,并具有Include=“Roles”参数 我在GridView中添加了一个BoundField,它指向RoleName,这是实体角色的一个属性。然而,当我执行代码时,我得到了上面的错误 我在另一个应用程序中成功地使用了非常类似的代码。你知道为什么这样不行吗 这是我的EntityDataSource: <asp:En
<asp:EntityDataSource ID="EntityDataSource1" runat="server"
ConnectionString="name=pbu_checklistEntities"
DefaultContainerName="pbu_checklistEntities" EnableDelete="True"
EnableFlattening="False" EnableUpdate="True" EntitySetName="Users" Include="Role">
</asp:EntityDataSource>
这里是边界字段:
<asp:BoundField DataField="RoleName" HeaderText="Role" SortExpression="RoleName" />
您不能将
asp:BoundField
用于相关导航属性的属性。您只能使用asp:TemplateField
,然后使用Eval
将其绑定为只读(非绑定
)。BoundFields总是在内部使用Bind
,这就是它不起作用的原因。前一段时间,我不得不自己解决这个问题:
我猜“RoleName”在数据源中的属性名称拼写不正确。不,它在基础数据源(MSSQL)和实体数据模型中都有明确的名称。在角色中,列为ID、RoleName、RoleDescription、EditPermissions、EditBS、EditLibrary、EditSecurity、EditFinAid、EditStudentLife、EditStudentMin、,编辑部书记官长。在Users ID,UserID,roleid中,尽管我的回答是这样的,但我现在还是很困惑:
用户
实体中是角色
(单一参考)还是角色
(集合)?那么什么是RoleName
?应该是Role.Name
还是Role.RoleName
?或者在EntityDataSource中是否有一个Select
语句,将Role.Name
投影到RoleName
作为别名?谢谢!这是一个很大的帮助。链接的问题更一般地解决了这个问题,但是这个问题和答案在我的搜索中出现了+1——这个问题与答案更直接相关。这似乎只适用于IIS 6,而不是IIS 7。有人能证实或否认这一差异吗?是的,John Bledsoe,我只是在尝试在VS 2010/IIS 6安装程序上部署我在VS 2013/IIS 7上开发的项目时遇到了这个问题。在VS 2013/IIS 7环境中进行测试时,我没有遇到任何问题。将所有内容转换为TemplateFields对我很有用。