Member 13812021 Ответов: 1

Как обновить таблицу ссылок на запись с тем же идентификатором пользователя с помощью customerid


У меня есть справочная таблица, которая при создании пользователя автоматически, по триггеру, помещает запись с идентификатором пользователя. Когда клиент добавляет информацию о компании, я хотел бы обновить эту запись с помощью CustomerId. Ниже, где (private readonly int CustomerId) находится это сообщение, которое гласит::
Поле 'CustomerController.CustomerId' никогда не присваивается и всегда будет иметь значение по умолчанию 0

Так что, возможно, он обновляет запись с 0. Я не могу сказать, потому что при создании записи с помощью триггера я ставлю ноль в Столбцах, так как у меня они установлены на not null.
Спасибо за вашу помощь.

Что я уже пробовал:

Контроллер:
private readonly int CustomerId;
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult CreateProfile([Bind(Include = "CustomerId,CustomerName")] CustomerNames customerNames)
        {
            if (ModelState.IsValid)
            {
                db.CustomerNames.Add(customerNames);
                var user = User.Identity.GetUserId();
                var companyId = (from p in db.UserJoin where p.UserId == user select p).First();
                companyId.CustomerId = CustomerId;
                db.SaveChanges();
                return RedirectToAction("AddBillingAddress", "BillingAddresses");
            }

            return View(customerNames);
        }



Модель:

public class UsersToAddresses
{
    [Key]
    public string UserId { get; set; }
    public int BillToId { get; set; }
    public int ShipToId { get; set; }
    public int CustomerId { get; set; }
}

1 Ответов

Рейтинг:
1

Yvan Rodrigues

Компилятор прав в том, что ваш код никогда явно не присваивает значение CustomerId Предполагая, что вы правильно настроили свою привязку так, чтобы ей было присвоено значение (я не думаю, что у вас есть), вы можете заставить предупреждение уйти с помощью:

private readonly int CustomerId = 0;


Member 13812021

Иван, customerid является ключом к таблице "клиент" и получает автоматически увеличивается на единицу при добавлении. Так может мне стоит сделать что-то вроде этого?
private readonly int CustomerId = CustomerId. Я поиграю с ним и посмотрю, что получится. Если вы знаете лучший способ, это было бы здорово.

Member 13812021

Это не сработало. ввод кода, который у вас есть, все еще имеет сообщение, как и раньше. Я обнаружил, что вы не можете получить CustomerId, пока он не будет сохранен. Однако я все еще придумываю 0 для CustomerId, даже когда с точками останова CustomerId-это то, что нужно добавить в строку кода. Мне просто нужно иметь возможность обновить запись с тем же идентификатором пользователя с помощью CustomerId.

Yvan Rodrigues

А что вы ожидали Кодклиента, чтобы получить присваивается значение. Что ты пытаешься здесь сделать:
[Bind(Include = "CustomerId,CustomerName")]

Member 13812021

Я решил просто запустить хранимую процедуру, которая вставляет имя пользователя и получает идентификатор, а затем обновляет идентификатор клиента в другой таблице. Кажется, что он чище и держит код вне контроллера.