【问题标题】:display details using entity framework使用实体框架显示详细信息
【发布时间】:2013-10-31 23:31:00
【问题描述】:
我想使用实体框架从 wpf 的组合框中显示所选项目的详细信息。但是无论选择什么项目,我下面的代码都只显示数据库中的第一个条目。
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
using (Entities c = new Entities())
{
string sFirst = c.UserProfiles.FirstOrDefault().First.ToString();
string sLast = c.UserProfiles.FirstOrDefault().Last.ToString();
txtFirst.Text = sFirst;
txtSecond.Text = sLast;
}
}
【问题讨论】:
标签:
c#
wpf
entity-framework
【解决方案1】:
我认为你是在搞混。
我相信您真正想要的是组合框中的项目。
试试这个代码:
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var comboBox = sender as ComboBox;
if (comboBox != null)
{
var item = comboBox.SelectedItem as EntityType;
//EntityType == the table you are loading into combobox (I guess it supposed to be UserProfile)
if (item != null)
{
txtFirst.Text = item.First.ToString();
txtSecond.Text = item.Last.ToString();
}
}
}
【解决方案2】:
您没有从数据库中过滤数据...没有指定所选项目的where 子句。我不知道您的数据结构,但请尝试以下操作:
using (Entities c = new Entities())
{
string sFirst = c.UserProfiles.Where(u => u.Id == selectedItemId).First().First.ToString();
string sLast = c.UserProfiles.Where(u => u.Id == selectedItemId).First().Last.ToString();
txtFirst.Text = sFirst;
txtSecond.Text = sLast;
}
此外,如果您不检查结果是否为null,则使用FirstOrDefault() 毫无意义。