使用实体框架显示详细信息

时间:2013-10-31 14:58:26

标签: c# wpf entity-framework

我想使用实体框架在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;
         }
    }

2 个答案:

答案 0 :(得分:0)

您没有过滤数据库中的数据...没有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;
}

此外,如果您不打算检查结果是否为FirstOrDefault(),则使用null是没有意义的。

答案 1 :(得分:0)

我认为你正在混淆东西。

我相信你真正想要的是combox中的项目。 试试这段代码:

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();
            }
        }
    }