【问题标题】: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() 毫无意义。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-16
        • 1970-01-01
        • 1970-01-01
        • 2016-07-05
        相关资源
        最近更新 更多