Entity Framework dbContext SaveChanges () разные пользователи чтения и записи вызывают ошибку - PullRequest
0 голосов
/ 06 мая 2020

У меня есть веб-приложение 4.x MVC. До этого момента все мои отправления в базу данных выполнялись со встроенной безопасностью, и моя учетная запись является db_owner. Перенос приложения на разработчика. Мне было поручено создать разных пользователей для чтения и письма. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что метод dbContext.SaveChanges (), похоже, хочет и читать, и писать.

МОДЕЛЬ:

namespace App.Models
{
    public class Model
    {
        [Key]
        public string ID { get; set; }
        public string Data { get; set; }
        public string OtherData { get; set; }
        public bool OtherData { get; set; }
    }

    public class DBContextRead : DbContext
    {
        public DbSet<Model> ReadModel { get; set; }
    }

    public class DBContextWrite : DbContext
    {
        public DbSet<Model> WriteModel { get; set; }
    }
}

КОНТРОЛЛЕР:

        private DBContextRead dbr = new DBContextRead();
        private DBContextWrite dbw = new DBContextWrite();

        public ActionResult Edit(string id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Model model = db.Model.Find(id);
            if (model == null)
            {
                return HttpNotFound();
            }
            return View(model);
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "ID,Data,OtherData,Bool")] Model model)
        {
            if (ModelState.IsValid)
            {
                dbw.Entry(model).State = EntityState.Modified;
                dbw.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(model);
        }


И я полагаю, что представление не имеет значения, просто сгенерированный набор представлений с очень небольшим количеством изменений.

Всякий раз, когда вызывается метод редактирования, в dbw.SaveChanges () возникает ошибка, которая может 'не выполняет оператор SELECT из-за недостаточного разрешения, ну это писатель, так что это имеет смысл. К сожалению, когда я использую dbr.SaveChanges (), выдается другая ошибка, из-за которой у пользователя нет разрешения на выполнение команды UPDATE, это также имеет смысл, потому что это читатель.

Итак, вы, вероятно, теперь видите проблему, есть мысли о том, как это обойти?

Как мне вызвать метод SaveChanges (), используя разных пользователей БД для чтения и записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...