devart dotconnect sqlite - проблема с базой данных sqlite в сетевой папке - PullRequest
0 голосов
/ 11 сентября 2018

У меня mailsever, использующий sqlite для хранения информации об учетной записи пользователя. Я также создаю приложение (на другом компьютере), чтобы напрямую редактировать / вставлять базу данных пользователей без открытого графического интерфейса почтового сервера, чтобы сделать это.Он работал нормально, пока почтовый сервер не обновился до новой версии и не подключился к sqlite db в режиме wal.Затем каждый раз, когда я соединяю sqlite с помощью devart dot connect для sqlite и редактирую базу данных пользователей, происходит сбой БД и теряется вся пользовательская информация, файл БД кажется поврежденным.я также обнаружил, что режим wal может не работать в сетевой папке.https://www.sqlite.org/wal.html Но любой здесь может помочь мне лучше всего с этим справиться. Мне действительно нужно отредактировать базу данных sqlite в этом случае. Большое спасибо

protected void btnSave_Click (отправитель объекта, EventArgs e) {

        try
        {
            MailAddress Usermail = new MailAddress(txtAccEmail.SelectedItem.Text);
            string user = Usermail.User;
            string Domain = Usermail.Host;


            using (var Db = new MailContext.MailDataContext())
            {
                var X = Db.Mailusers.Where(n => n.Name == user && n.Domain == "" && Domain.ToUpper() == "MYDOMAIN.NET"
           || string.Concat(n.Name, "@", n.Domain) == Usermail.Address).FirstOrDefault();

                if (X != null)
                {
                    if (cmbEmailManager.SelectedItem != null)
                    {
                        X.EmailManagers = cmbEmailManager.SelectedItem.Text;
                    }


                    if (btnAllowDownload.Checked)
                    {
                        X.AllowDownloadAttachment = 1;
                    }
                    else
                    {
                        X.AllowDownloadAttachment = 0;
                    }

                    if (chkWebApp.Checked)
                    {
                        X.WebAppPermission = 1;
                    }
                    else
                    {
                        X.WebAppPermission = 0;
                    }

                    string NewIds = string.Join(",", lstDeviceIds.Items.Select(o => o.Text).ToArray());
                    if (NewIds.Trim() == "")// ko co deviceids
                    {
                        X.DeviceIDs = string.Empty;
                    }
                    else// co deviceids
                    {
                        X.DeviceIDs = NewIds;

                    }

                    //  if ((DateTime)extWebmailPicker.SelectedDate > DateTime.Now)
                    {
                        X.ExtWebmail = Tools.ConvertToUnixTime((DateTime)extWebmailPicker.SelectedDate);
                    }
                }
                X.Office = txtMailOffice.Text;
                X.Authtype = byte.Parse(ddlAuthen.SelectedValue);
                if (ddlAuthen.SelectedValue == "0" && txtMailPassword.Text != "")
                {
                    X.Authtype = 0;
                    X.Password = "{md5}" + Tools.Md5Hash(txtMailPassword.Text);
                }
                X.Status = byte.Parse(ddlMailAccountStatus.SelectedValue);



                X.Mailquota = long.Parse(txtMailQuota.Text.Trim()) * long.Parse(ddlQuotaUnit.SelectedValue);
                X.Maxrcpt = int.Parse(txtMailMaxRecipients.Text.Trim());
                X.Maxmsgsize = int.Parse(txtMailMaxBytes.Text.Trim()) * int.Parse(ddlUnit.SelectedValue);
                byte Recvcontrol = 0;
                if (chkDenyReceive2.Checked)
                    Recvcontrol += 2;
                if (chkDenyReceive4.Checked)
                    Recvcontrol += 4;
                if (chkDenyReceive8.Checked)
                    Recvcontrol += 8;

                byte Sendcontrol = 0;
                if (chkDenySend2.Checked)
                    Sendcontrol += 2;
                if (chkDenySend4.Checked)
                    Sendcontrol += 4;
                if (chkDenySend8.Checked)
                    Sendcontrol += 8;

                X.Sendcontrol = Sendcontrol;
                X.Recvcontrol = Recvcontrol;
                X.Senddomainlist = FinalString(lstSendDomainList);
                X.Recvdomainlist = FinalString(lstReceiveDomainList);


                if (chkEmailForward.Checked)
                    X.Fwdsavecopy = 1;
                else
                    X.Fwdsavecopy = 1;

                X.Forwardaddr = FinalString(lstMailForward);


                string Smtpright = "";
                string Imapright = "";
                if (smtpNone.Checked)
                {
                    Smtpright = "0";
                    Imapright = "0";

                }
                if (smtpAllow.Checked)
                {
                    Smtpright = "1";
                    Imapright = "1";
                }
                if (smtpDeny.Checked)
                {
                    Smtpright = "2";
                    Imapright = "2";
                }
                Smtpright += ":" + FinalString(lstSmtp);
                Imapright += ":" + FinalString(lstSmtp);
                X.Smtpacl = Smtpright;
                X.Imapacl = Imapright;

                string Webmailright = "";
                if (webmailNone.Checked)
                {
                    Webmailright = "0";
                }
                if (webmailAllow.Checked)
                {
                    Webmailright = "1";
                }
                if (webmailDeny.Checked)
                {
                    Webmailright = "2";
                }
                Webmailright += ":" + FinalString(lstWebmail);

                X.Webmailacl = Webmailright;

                Db.SubmitChanges();

                lblMessageAll.Text = "Object was successfully changed";
                ClearTextBox();

            }
        }
        catch (Exception Ex)
        {
            lblMessageAll.Text = Ex.Message;
        }
    }
...