C# System.Data.Linq.dll中发生类型为“System.Data.SqlServerCe.SqlCeException”的未处理异常

C# System.Data.Linq.dll中发生类型为“System.Data.SqlServerCe.SqlCeException”的未处理异常,c#,.net,linq,windows-phone-7,C#,.net,Linq,Windows Phone 7,我得到下面的错误,我不知道为什么,因为我的应用程序在4小时前运行正常,但现在不工作,我没有改变任何东西 类型的未处理异常 中出现“System.Data.SqlServerCe.SqlCeException” System.Data.Linq.dll 我在db.SubmitChanges;行中得到错误;。。我在下面留下完整的代码 using System; using System.Collections.Generic; using System.Linq; using System.Net;

我得到下面的错误,我不知道为什么,因为我的应用程序在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(); }
        }
    }
}

根据过去的经验,我将在这里冒险。SqlServerCE驱动程序有两种风格,x86和x64。通常情况下,机器上只能安装一个,而安装程序在第二个上会失败。但是,如果先安装x86驱动程序,然后安装x64,则可以在命令行上使用/force开关


这可能有助于解决您的问题,也可能不难从提供的详细信息中分辨出来。

好的,我不知道为什么,但现在我的应用程序正在运行。我认为此错误是Visual Studio的一种错误,因此,为了解决我的问题,我刚刚重新启动了计算机。

异常通常也包括一条消息。错误中是否提供了其他信息?实际上没有其他信息。我可以显示问题的图像,但我不知道如何在这里附加图像。什么是“coletor”?例如,您是否违反了任何约束唯一键?Coletor是一个类,我没有违反。。这很奇怪,因为我的程序运行正常,但是,突然,就停了。我将离开问题中的Coletor类;对吗?这是Windows Phone,运行的是ARM操作系统,没有任何可安装的驱动程序。你没有打电话给技术支持吗?你试过重新启动你的电脑吗?