我收到下面的错误,我不知道为什么,因为我的应用程序在4小时前正常运行,但现在不能正常工作,我没有改变任何东西..
未处理的类型异常 发生'System.Data.SqlServerCe.SqlCeException' System.Data.Linq.dll
我收到了db.SubmitChanges();
行中的错误。我将在下面留下完整的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO.IsolatedStorage;
using System.IO;
using Microsoft.Phone.Shell;
using System.ComponentModel;
using System.Data.Linq;
using System.Collections.ObjectModel;
namespace Aplicativo_Windows_Phone
{
public partial class AddColetor : PhoneApplicationPage
{
string email;
public AddColetor()
{
InitializeComponent();
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
NavigationContext.QueryString.TryGetValue("email", out email);
}
private void btnAdd_Click_1(object sender, RoutedEventArgs e)
{
AppDataContext db = new AppDataContext();
Coletor coletor = new Coletor();
if (rdNorte.IsChecked == true)
{
coletor.Latitude = Convert.ToInt32(txtLat.Text);
}
else
{
coletor.Latitude = Convert.ToInt32(txtLat.Text) - (2 * Convert.ToInt32(txtLat.Text));
}
if (rdLeste.IsChecked == true)
{
coletor.Longitude = Convert.ToInt32(txtLong.Text);
}
else
{
coletor.Longitude = Convert.ToInt32(txtLong.Text) - (2 * Convert.ToInt32(txtLong.Text));
}
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", UriKind.RelativeOrAbsolute));
}
else
{
MessageBox.Show("Preencha todos os campos e marque as opções para adicionar um coletor");
}
}
private void btnCancel_Click_1(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/ColetoresPage.xaml", UriKind.RelativeOrAbsolute));
}
}
}
Coletor班:
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(Name = "Pessoa")]
private int? pessoaId;
private EntityRef<Pessoa> _pessoa = new EntityRef<Pessoa>();
[Association(Name = "FK_Coletores_ColetorPessoa", IsForeignKey = true, Storage = "_pessoa", ThisKey = "pessoaId")]
public Pessoa Pessoa
{
get { return _pessoa.Entity; }
set { _pessoa.Entity = value; }
}
private EntitySet<Ocorrencia> _ocorrencias = new EntitySet<Ocorrencia>();
[Association(Name = "FK_Ocorrencias_ColetorOcorrencias", Storage = "_ocorrencias", ThisKey = "Id", OtherKey = "coletorId")]
public ICollection<Ocorrencia> Ocorrencias
{
get { return (from co in ColetorOcorrencias select co.Ocorrencia).ToList(); }
set { _ocorrencias.Assign(value); }
}
private EntitySet<PessoaColetor> _pessoaColetores = new EntitySet<PessoaColetor>();
[Association(Name = "FK_PessoaColetores_Coletores", Storage = "_pessoaColetores", OtherKey = "coletorId", ThisKey = "Id")]
private ICollection<PessoaColetor> PessoaColetores
{
get { return _pessoaColetores; }
set { _pessoaColetores.Assign(value); }
}
private EntitySet<ColetorOcorrencia> _coletorOcorrencias = new EntitySet<ColetorOcorrencia>();
[Association(Name = "FK_ColetorOcorrencias_Coletores", Storage = "_coletorOcorrencias", OtherKey = "coletorId", ThisKey = "Id")]
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(); }
}
}
}
答案 0 :(得分:0)
根据过去的经验,我会在这里走出困境。 SqlServerCE驱动程序有两种版本,x86和x64。通常,只有一个可以安装在机器上,安装程序将在第二个时失败。但是,如果首先安装x86驱动程序然后安装x64,则可以在命令行上使用/ force开关。
这可能有助于您解决问题,也可能不会,从提供的详细信息中难以辨别。
答案 1 :(得分:0)
好的,我不知道为什么,但现在我的申请正在运作。我认为这个错误是Visual Studio的一种错误,所以,为了解决我的问题,我刚刚重启了我的电脑。