Moses_k Ответов: 1

Отслеживание изменений в entity framework


Привет,
У меня есть проблема с трекером изменений в работе EntityFrame.
Как я могу получить имя базы данных из трекера изменений?
Я реализовал свой код, но он возвращает только имя модели, а не физическое имя БД.
Спасибо.

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

Получить физическое имя БД с помощью change tracker в entityframework

Sandeep Mewara

Не совсем понятно, что вы ищете, не так ли:

foreach (var entityType in dbContext.Model.GetEntityTypes())
{
    var tableName = entityType.GetTableName();
    foreach (var propertyType in entityType.GetProperties())
    {
        var columnName = propertyType.GetColumnName();
    }
}

Moses_k

Я использую Asp.net MVC5 и мой DbContext, который не имеет модели.
Я просто хочу показать физическое имя таблицы текущей модели.

Sandeep Mewara

Что значит, у вас нет DBContext? Прочтите это: https://docs.microsoft.com/en-us/ef/ef6/fundamentals/working-with-dbcontext

Moses_k

Привет,
Нет, у меня есть Dbcontext для Identity MVC5.

RoleBaseDbContext db = новый RoleBaseDbContext();
var s=ContextExtensions.GetTableName<string>(db);

foreach (var ent в этом.Программы changetracker.Входы().Где(p => p.State == EntityState.Добавлено || p.State == EntityState.Удаленные || стр. Государство == EntityState.Модифицированный))
{

// Для каждой измененной записи получите записи записей аудита и добавьте их
по каждому элементу (All_Log х в GetAuditRecordsForChange(ЛОР, идентификатор пользователя))
{
этот.All_Log.Добавить(х);
}
}

Moses_k

но я думаю, что это не существует dbContext.Model.GetEntityTypes().
ибо asp.net mvc5 он существует в asp .net core.

1 Ответов

Рейтинг:
10

Gerry Schmitz

"Отслеживание изменений" не имеет отношения к вашему вопросу.

DbContext имеет свойство .DataBase "class".

Класс базы данных указывает на класс / объект .DbConnection.

Класс .DbConnection имеет "строку" базы данных, которая является "физическим именем БД".


Sandeep Mewara

OP ищет имя таблицы, соответствующее сущностям. Он написал базу данных вместо таблицы в оригинальном посте, но позже в комментарии сказал: "я просто хочу показать физическое имя таблицы текущей модели."

Я не совсем понимаю что он имеет в виду у него нет модели для DBContext учитывая что он работает над ней ASP.NET MVC.