为什么我的ICollection总是空的?

时间:2015-03-10 22:12:44

标签: c# linq windows-phone-7 icollection

我正试图达到一个foreach但我的程序永远不会进入,因为我的ICollection Coletores总是空的,即使我在那里放了很多东西。

我想进入的代码,它总是空的(我想进入第二个foreach):

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        if (NavigationContext.QueryString.TryGetValue("email", out email))
        {
            //MessageBox.Show(email);
            List<HyperlinkButton> listaLinks = new List<HyperlinkButton>();

            AppDataContext db = new AppDataContext();

            int i = 0;

            HyperlinkButton aux = new HyperlinkButton();

            foreach (Pessoa pessoa in db.Pessoas)
            {
                if (pessoa.Email == email)
                {
                    foreach (Coletor coletor in pessoa.Coletores)
                    {
                        aux.Content = "Coletor " + (i + 1).ToString();
                        aux.FontSize = 24;
                        aux.NavigateUri = new Uri("/OcorrenciasPage.xaml?coletorId=" + coletor.Id.ToString(), UriKind.RelativeOrAbsolute);
                        listaLinks.Add(aux);
                        i++;
                    }
                }
            }

            ListBox coletores = new ListBox();
            coletores.ItemsSource = listaLinks;
            stcList.Children.Add(coletores);
        }
        base.OnNavigatedTo(e);
    }

现在我正在添加数据的代码:

        if (txtLat.Text != "" && txtLong.Text != "" && rdNorte.IsChecked == true || rdSul.IsChecked == true && rdLeste.IsChecked == true || rdOeste.IsChecked == true)
        {
            foreach (var pessoa in db.Pessoas)
            {
                if (pessoa.Email == email)
                {
                    pessoa.Coletores.Add(coletor);
                }
            }

            db.Coletores.InsertOnSubmit(coletor);
            db.SubmitChanges();

            NavigationService.Navigate(new Uri("/ColetoresPage.xaml?email=" + email, UriKind.RelativeOrAbsolute));
        }

现在,我的Pessoa班级:

public class Pessoa : INotifyPropertyChanged
{
    private int _id;
    [Column(IsDbGenerated = true, IsPrimaryKey = true)]
    public int Id { 
        get { return _id;}
        set { _id = value;
        OnPropertyChanged("Id");
        }
    }

    private string _nome;
    [Column]
    public string Nome
    {
        get { return _nome; }
        set { _nome = value;
        OnPropertyChanged("Nome");
        }
    }

    private string _email;
    [Column]
    public string Email
    {
        get { return _email; }
        set { _email = value;
        OnPropertyChanged("Email");
        }
    }

    private string _senha;
    [Column]
    public string Senha { get { return _senha; }
        set { _senha = value;
        OnPropertyChanged("Senha");
        }
    }

    private string _profissao;
    [Column]
    public string Profissao { get { return _profissao; }
        set { _profissao = value;
        OnPropertyChanged("Profissao");
        }
    }

    private int _idade;
    [Column]
    public int Idade { get { return _idade; }
        set { _idade = value;
        OnPropertyChanged("Idade");
        }
    }

    private string _endereco;
    [Column]
    public string Endereco { get { return _endereco; }
        set { _endereco = value;
        OnPropertyChanged("Endereco");
        }
    }

    private string _cidade;
    [Column]
    public string Cidade { get { return _cidade; }
        set { _cidade = value;
        OnPropertyChanged("Cidade");
        }
    }

    private string _estado;
    [Column]
    public string Estado { get { return _estado; }
        set { _estado = value;
        OnPropertyChanged("Estado");
        }
    }

    private EntitySet<Coletor> _coletores = new EntitySet<Coletor>();

    [Association(Name = "FK_Coletores_PessoaColetores", Storage = "_coletores", ThisKey = "Id", OtherKey = "pessoaId")]
    public ICollection<Coletor> Coletores
    {
        get { return _coletores; }
        set { _coletores.Assign(value); }
    }

    private EntitySet<PessoaColetor> _pessoaColetores = new EntitySet<PessoaColetor>();

    [Association(Name = "FK_PessoaColetores_Pessoas", Storage = "_pessoaColetores", OtherKey = "pessoaId", ThisKey = "Id")]
    private ICollection<PessoaColetor> PessoaColetores
    {
        get { return _pessoaColetores; }
        set { _pessoaColetores.Assign(value); }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void OnPropertyChanged(string name)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(name));
        }
    }
}

1 个答案:

答案 0 :(得分:0)

Pessoa班的Coletores酒店看起来不错。还有一个PessoaColetores酒店。你确定两者之间没有混淆吗?特别是对于intellisense,可能会点或错误。

你是否在实际添加coletors(第二个代码段)的行上设置了一个断点?也许东西会被添加到错误的集合中。

干杯,B。