Различные способы объявления запросов EF без отслеживания в контекстеC#

Место общения программистов C#
Ответить
Anonymous
 Различные способы объявления запросов EF без отслеживания в контексте

Сообщение Anonymous »

В контексте данных «Как сделать контекст данных о предприятии», один из пользователей, рекомендует использовать синтаксис => для получения запросов, связанных с отсутствием отслеживания объектов в ef.
Есть ли выгода для возврата нового запроса с помощью set> (). Почему бы не инициализировать его один раз в конструкторе?

Код: Выделить всё

using Microsoft.EntityFrameworkCore;

public class Customer
{
public int Id { get; set; }
public string? Name { get; set; }
}

public class MyFirstContext : DbContext
{
public IQueryable CustomersRO => Set().AsNoTracking();

public MyFirstContext() : base() {}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
// optionsBuilder.UseSqlServer(...)
}
}
}

public class MySecondContext : DbContext
{
public readonly IQueryable CustomersRO;

public MySecondContext() : base() {
CustomersRO = Set().AsNoTracking();
}

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
// optionsBuilder.UseSqlServer(...)
}
}
}
Просмотрите реализацию set () , мы видим, что она использует метод getorAddset для добавления нового экземпляра или извлечения соответствующего dbset . Этот метод, в свою очередь, использует словарь, чтобы найти соответствующий внутренний объект. Кроме того, Asnotracking возвращает новый запрос каждый раз, когда он вызывается. Сложность этих операций может быть незначительной, но все еще чрезмерной.

Подробнее здесь: https://stackoverflow.com/questions/797 ... he-context
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»