我正在开发一个Windows Phone应用程序,我遇到了LINQ问题。当我尝试运行我的应用程序时,它显示消息:
未处理的类型' System.InvalidOperationException'发生在System.Data.Linq.dll
中附加信息:ThisKey列的数量与关联属性的Coletor'的OtherKey列数不同。在#Pessoa'类型中。
我已经尝试过在谷歌上找到的所有东西,但是没有用。有问题的文件如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq.Mapping;
using System.Data.Linq;
namespace Aplicativo_Windows_Phone
{
#pragma warning disable 0169, 0649
[Table(Name="Pessoas")]
public class Pessoa
{
[Column(IsDbGenerated = true, IsPrimaryKey = true)]
public int Id { get; set; }
[Column]
public string Nome { get; set; }
[Column]
public string Email { get; set; }
[Column]
public string Senha { get; set; }
[Column]
public string Profissao { get; set; }
[Column]
public int Idade { get; set; }
[Column]
public string Endereco { get; set; }
[Column]
public string Cidade { get; set; }
[Column]
public string Estado { get; set; }
[Column(IsPrimaryKey = true, Name = "Coletor")]
private int? coletorId;
private EntityRef<Coletor> _coletor = new EntityRef<Coletor>();
[Association(Name = "FK_Pessoas_PessoaColetores", IsForeignKey = true, Storage = "_coletor", ThisKey = "coletorId")]
public Coletor Coletor
{
get { return _coletor.Entity; }
set { _coletor.Entity = value; }
}
private EntitySet<PessoaColetor> _pessoaColetores = new EntitySet<PessoaColetor>();
[Association(Name = "FK_PessoaColetores_Pessoa", Storage = "_pessoaColetores", OtherKey = "pessoaId", ThisKey = "Id")]
private ICollection<PessoaColetor> PessoaColetores
{
get { return _pessoaColetores; }
set { _pessoaColetores.Assign(value); }
}
public ICollection<Coletor> Coletores
{
get { return (from pc in PessoaColetores select pc.Coletor).ToList(); }
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq.Mapping;
using System.Data.Linq;
using Microsoft.Phone.Data.Linq;
using Microsoft.Phone.Data.Linq.Mapping;
namespace Aplicativo_Windows_Phone
{
#pragma warning disable 0169, 0649
[Table(Name="Coletores")]
public class Coletor
{
[Column(IsPrimaryKey = true, IsDbGenerated = true)]
public int Id { get; set; }
[Column]
public float Latitude { get; set; }
[Column]
public float Longitude { get; set; }
[Column]
public string Nome { get; set; }
private EntitySet<PessoaColetor> _pessoaColetores = new EntitySet<PessoaColetor>();
[Association(Name = "FK_PessoaColetores_Coletor", Storage = "_pessoaColetores", ThisKey = "Id", OtherKey = "coletorId")]
private ICollection<PessoaColetor> PessoaColetores
{
get { return _pessoaColetores; }
set { _pessoaColetores.Assign(value); }
}
[Column(IsPrimaryKey = true, Name = "Ocorrencias")]
private int? ocorrenciaId;
private EntityRef<Ocorrencia> _ocorrencia = new EntityRef<Ocorrencia>();
[Association(Name = "FK_Coletores_ColetorOcorrencias", IsForeignKey = true, Storage = "_ocorrencia", ThisKey = "ocorrenciaId")]
public Ocorrencia Ocorrencia
{
get { return _ocorrencia.Entity; }
set { _ocorrencia.Entity = value; }
}
private EntitySet<ColetorOcorrencia> _coletorOcorrencias = new EntitySet<ColetorOcorrencia>();
[Association(Name = "FK_ColetorOcorrencias_Coletor", Storage = "_coletorOcorrencias",ThisKey = "Id", OtherKey = "coletorId")]
private ICollection<ColetorOcorrencia> ColetorOcorrencias
{
get { return _coletorOcorrencias; }
set { _coletorOcorrencias.Assign(value); }
}
public ICollection<Pessoa> Pessoas
{
get { return (from pc in PessoaColetores select pc.Pessoa).ToList(); }
}
public ICollection<Ocorrencia> Ocorrencias
{
get { return (from co in ColetorOcorrencias select co.Ocorrencia).ToList(); }
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Linq.Mapping;
using System.Data.Linq;
using Microsoft.Phone.Data.Linq;
using Microsoft.Phone.Data.Linq.Mapping;
namespace Aplicativo_Windows_Phone
{
#pragma warning disable 0169, 0649
[Table(Name = "PessoaColetores")]
class PessoaColetor
{
[Column(IsPrimaryKey = true, Name = "Coletor")]
private int coletorId;
private EntityRef<Coletor> _coletor = new EntityRef<Coletor>();
[Association(Name = "FK_PessoaColetores_Coletores", IsForeignKey = true, Storage = "_coletor", ThisKey = "coletorId")]
public Coletor Coletor
{
get { return _coletor.Entity; }
set { _coletor.Entity = value; }
}
[Column(IsPrimaryKey = true, Name = "Pessoa")]
private int pessoaId;
private EntityRef<Pessoa> _pessoa = new EntityRef<Pessoa>();
[Association(Name = "FK_PessoaColetores_Pessoas", IsForeignKey = true, Storage = "_pessoa", ThisKey = "pessoaId")]
public Pessoa Pessoa
{
get { return _pessoa.Entity; }
set { _pessoa.Entity = value; }
}
}
}
答案 0 :(得分:2)
不应该是这个主键
[Column(IsPrimaryKey = true, Name = "Coletor")]
private int? coletorId;
是外键
[Column(IsForeignKey= true, Name = "Coletor")]
private int? coletorId;