我的数据库关系如下;
国家/地区 - >地区 - >城市 - >医疗 - > MedicalServices所有这些服务都以一对多的方式相互连接。
这是listview和entitydatasource,它按预期工作,没有任何问题。问题在于背后的代码。
<asp:ListView ID="lvMainContent" runat="server"
DataKeyNames="MedicalID">
<LayoutTemplate>
<ul ID="itemPlaceholderContainer" runat="server"
style="font-family: Verdana, Arial, Helvetica, sans-serif;">
<li runat="server" id="itemPlaceholder" />
</ul>
<div style="text-align: center;background-color: #CCCCCC;font-family: Verdana, Arial, Helvetica, sans-serif;color: #000000;">
</div>
</LayoutTemplate>
<ItemSeparatorTemplate>
<br />
</ItemSeparatorTemplate>
<ItemTemplate>
<li style="background-color: #DCDCDC;color: #000000;">Medicals:
<br />
MedicalName:
<asp:Label ID="Label1" runat="server" Text='<%# Eval("medicalName") %>' />
<br />
<br />
CityName:
<asp:Label ID="Label3" runat="server" Text='<%# Eval("City.CityName") %>' />
<br />
<br />
</li>
</ItemTemplate>
</asp:ListView>
<asp:EntityDataSource ID="lvMainContentDataSource" runat="server"
ConnectionString="name=EntitiesMedical"
DefaultContainerName="EntitiesMedical" EntitySetName="Medicals"
EnableFlattening="False">
</asp:EntityDataSource>
这里是Code Behind连接到“Search”按钮实际上Code Behind和ASP端看起来和我相同但是当我按下Search按钮时会抛出错误,我在后面的代码后添加它。
protected void SearchButton_Click(object sender, EventArgs e)
{
using(Entity.EntitiesMedical em = new Entity.EntitiesMedical())
{
var result = from m in em.Medicals
where m.City.CityName == "Düsseldorf"
select new
{
m.MedicalID,
m.medicalName,
m.City.CityName
};
EntityDataSource eds = new EntityDataSource();
eds.ConnectionString = "name=EntitiesMedical";
eds.DefaultContainerName = "EntitiesMedical";
eds.EntitySetName = "Medicals";
lvMainContent.DataSource = result.ToList();
lvMainContent.DataBind();
}
}
DataBinding:'&lt;&gt; f__AnonymousType5`3 [[System.Int32,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089],[System.String,mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]'不包含名为'City'的属性。
任何帮助将不胜感激。我对Include属性很困惑,实际上我根本不需要它。
答案 0 :(得分:1)
您的查询后面的代码返回带有
的匿名类型City.CityName
另一方面,列表视图绑定到
City.CityName
这不起作用,返回的属性已经是一个字符串,列表需要一个对象,城市。
只是做:
select new
{
m.MedicalID,
m.medicalName,
m.City
};
EntityDataSource eds = new EntityDataSource();
eds.ConnectionString = "name=EntitiesMedical";
eds.DefaultContainerName = "EntitiesMedical";
eds.EntitySetName = "Medicals";