непосредственно обновить поле с помощью первичного ключа в EF - PullRequest
1 голос
/ 17 апреля 2020

Я не уверен, возможно ли это, но я должен сделать это много. У меня есть одно поле, которое требует обновления. То, как я делаю это с помощью SP, будет:

    CREATE PROCEDURE UpdPODPDFURLByStopID
    @Stop_Detail_Id int,
    @POD_PDF_URL varchar(max)
AS
BEGIN
    SET NOCOUNT ON

    UPDATE Stop_Detail
    SET     
        POD_PDF_URL = @POD_PDF_URL
    WHERE
        Id = @Stop_Detail_Id

END

Затем вызовите это как:

 int count = context.UpdPODPDFURLByStopID(Convert.ToInt32(lobStop["stopId"]), pdfUrl);

Или я делаю что-то вроде:

var recordToUpdate = db.Driver_Detail.Find(newTopHatDriver);
recordToUpdate.record_note = "test Note";
db.SaveChanges();

Есть ли способ просто указать контексту, чтобы он обновлял запись напрямую?

1 Ответ

1 голос
/ 17 апреля 2020

Это обновит вашу сущность, не получив ее сначала из db

var record = new Driver_Detail
{
    ID = 1, //ID of an entity you want to edit
    POD_PDF_URL = "field you want to edit"
};

db.Attach(record);
db.Entry(record).Property(rec => rec.POD_PDF_URL).IsModified = true;
db.SaveChanges();

Если сущность с данным идентификатором не существует в базе данных, она выдаст DbUpdateConcurrencyException, она не будет пытаться добавить ее. Состояние объекта изменяется на «Изменено», а не «Добавлено». Состояния сущностей

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