Сравните значение текстового поля со значением базы данных и обновите в другую таблицу - PullRequest
0 голосов
/ 10 января 2019

Я использую Entity Framework 4. Мне нужно обновить 2 разные таблицы. Сначала нужно сравнить введенное текстовое поле со значением базы данных. Если введенное текстовое поле не существует или не совпадает со значением базы данных, обновите 2 разные таблицы. Таблица 1 состоит из пользовательских данных, а таблица 2 содержит измененные данные. Предположим, я обновил поле «Номер телефона», после чего обновленные данные должны быть сохранены в таблице сведений о пользователе, а измененные данные в файле должны быть сохранены в файле журнала, например, кто изменил, дата и имя файла.

Таблица пользовательских журналов

UserLog Table

Просмотр:

@model ApiSample.Models.TestData
@{
    ViewBag.Title = "About";
}
<h2>@ViewBag.Title.</h2>
@using (Html.BeginForm("About", "Home", FormMethod.Post))
{
    <form>
        <p>Use this area to provide additional information.</p>
        
             <p>@Html.LabelFor(model => model.Address) @Html.TextBoxFor(model => model.Address)</p>
             <p>@Html.LabelFor(model => model.PhoneNumber) @Html.TextBoxFor(model => model.PhoneNumber)</p>
     <button type="submit" title="Submit">Upload Image</button>    
    </form>
}

Модель:

    public partial class TestData
{
    public int ID { get; set; }
    public string Address { get; set; }
    public string PhoneNumber { get; set; }
}

    public partial class UserLog
{
    public int ID { get; set; }
    public string UserName { get; set; }
    public string ModifiedFiledName{ get; set; }
    public Nullable<System.DateTime> Date { get; set; }
}

Контроллер:

// Я не знаю, можно ли это сделать таким образом.

        [HttpPost]
    public ActionResult About(TestData testdata, UserLog log)
    {


        if (ModelState.IsValid)
        {
            // insert into Userlog table
            var inputUser = ConfigurationManager.AppSettings["INPUT_USER"].ToString().ToLower();
            var usr = _db.UserLogs.SingleOrDefault(u => u.ID == id);
            string date = DateTime.Now;
            usr.UserName = inputUser;
            usr.ModifiedFiledName = PhoneNumber;
            usr.Date = date;

            // update TestData table
            _db.TestDatas.Add(testdata);
            _db.Entry(testdata).State = EntityState.Added;
            _db.SaveChanges();
        }
        return RedirectToAction("About");
    }

Как обновить 2 таблицы в одном классе контроллера?

1 Ответ

0 голосов
/ 14 января 2019

Что-то вроде этого должно сделать это:

[HttpPost]
public ActionResult About(TestData testdata) //No need for UserLog model here
{


    if (ModelState.IsValid)
    {
        // insert into Userlog table
        var inputUser = ConfigurationManager.AppSettings["INPUT_USER"].ToString().ToLower();
        var usr = _db.UserLogs.SingleOrDefault(u => u.ID == id);
        string date = DateTime.Now;
        usr.UserName = inputUser;
        usr.ModifiedFiledName = PhoneNumber;
        usr.Date = date;

        _db.UserLogs.Add(usr);
        _db.Entry(usr).State = EntityState.Added;

        // update TestData table
        _db.TestDatas.Add(testdata);
        _db.Entry(testdata).State = EntityState.Added;

        //Save both tables
        _db.SaveChanges();
    }
    return RedirectToAction("About");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...