ModelBuilder.Ignore и [NotMapped] для модели, используемой в вызове хранимой процедуры - PullRequest
0 голосов
/ 13 октября 2018

Сначала используя код, я создал хранимую процедуру, которую я вызываю с помощью

_context.MySQLModel.FromSql

Я создал MySQLModel только для хранимой процедуры, я не хочу создавать таблицу в базе данных с таким именем.

Итак, в модели, которую я указал [NotMapped]:

public class MySQLModel
{
    [Key]
    public int IdMySQLModel { get; set; }
    public string Something { get; set; }
    public string SomethingTwo { get; set; }
}

В ApplicationDbContext я добавил

public DbSet<MySQLModel> MySQLModel { get; set; }

и под

protected override void OnModelCreating(ModelBuilder builder)

включено

builder.Ignore<MySQLModel>();

При выполнении происходит сбой со следующим сообщением:

System.InvalidOperationException: невозможно создать DbSet для «MySQLModel», поскольку этот тип не включен в модельдля контекста.

Итак, я продолжаю и закомментирую

//builder.Ignore<MySQLModel>();

Запустите снова, работает отлично.Я иду вперед и изменяю или создаю новую модель, делаю «Add-Migration» и код для генерации таблицы идет на миграцию.

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

Спасибо!

1 Ответ

0 голосов
/ 13 октября 2018

Вам нужно использовать DbQuery<> (доступно в EF Core 2.1) вместо DbSet<>:

public DbQuery<MySQLModel> MySQLModel { get; set; }

Тогда нет необходимости звонить builder.Ignore<MySQLModel>(); и использовать[NotMapped]

Вы можете использовать его аналогичным образом:

var mySQLModels = _context.MySQLModel.FromSql("select * from MySQLModelView");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...