Nano Hash - криптовалюты, майнинг, программирование

Получить идентификатор записи в Entity Framework после вставки

Я разрабатываю приложение ASP.net, используя Entity Framework. Я использую DetailsView для вставки данных в базу данных. Существует таблица как Client и ее первичный ключ client_id. client_id автоматически генерируется базой данных. Мне нужно автоматически сгенерировать client_id после вставки записи в таблицу Client и назначить ее скрытому полю для будущего использования.

Я искал об этом, и я нашел много решений. Но я не знаю, как их использовать, так как я новичок в asp.net. Я обнаружил, что Entity Framework автоматически заполняет бизнес-объекты сгенерированными базой данных значениями после вызова SaveChanges(). Мой вопрос: где я должен называть это в своем частичном классе? Что за событие?

Я использую DetailsView с EntityDataSource и привязываю EntityDataSource непосредственно к Entity Model, поэтому я не создаю объекты для вставки данных.



Ответы:


1

После вызова _dbContext.SaveChanges() объект будет автоматически обновлен новым значением поля идентификатора.

В следующем коде предполагается, что имя контейнера сущностей Entity Framework — MyEntities, а таблица Client вашей базы данных имеет как минимум два следующих поля:

client_id   int identity
client_name varchar(25)

Ваш код может выглядеть примерно так:

// Establish DbContext
private readonly MyEntities _dbContext = new MyEntities();

// Create new client table entity and initialize its properties
var clientEntity = new Client { client_name="MyCo" };

// Add it to the ORM's collection of Client entities
_dbContext.Clients.Add(clientEntity);

// Save the new entity to the database
_dbContext.SaveChanges();

// Return the identity field from the existing entity,
//   which was updated when the record was saved to the database
return clientEntity.client_id;
06.06.2013
  • Я использую DetailsView с EntityDataSource и привязываю EntityDataSource непосредственно к Entity Model. поэтому я не создаю объекты для вставки данных. 06.06.2013

  • 2

    После того, как вы вставили сущность, ее следует обновить, чтобы свойство, которое сопоставляется с первичным ключом в базе данных, имело новое значение PK.

    Нравится MyObject.Id даст вам новый идентификатор

    06.06.2013
  • Я использую DetailsView с EntityDataSource и привязываю EntityDataSource непосредственно к Entity Model. поэтому я не создаю объекты для вставки данных. 06.06.2013

  • 3

    Это то, что я ищу.

    в частичном классе

    protected void clientDataSource_OnInserted(object sender, EntityDataSourceChangedEventArgs e )
    {
    
        int newPrimaryKey = ((Client)e.Entity).ClientId;
        Debug.WriteLine(" Client ID is " + newPrimaryKey);
    
    }
    

    и добавлена ​​строка ниже в EntityDataSource на странице aspx.

    OnInserted="clientDataSource_OnInserted"
    
    06.06.2013
  • Спасибо! Это именно то, что я искал! 15.08.2016

  • 4

    Спасибо, я потратил 3 дня на поиск и поиск со сложными результатами, но это решение просто блестящее! Вот это в vb.net:

    Protected Sub dvArticulos_ItemInserted(sender As Object, e As EntityDataSourceChangedEventArgs) Handles EntityDataSource1.Inserted
        Dim last_Serie As Long = DirectCast(e.Entity, articulos).Serie
        Session("Articulo") = last_Serie
    End Sub
    
    14.11.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..