powered by simpleCommunicator - 2.0.33     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DbQuery и Миграции в EF 3
7 сообщений из 7, страница 1 из 1
DbQuery и Миграции в EF 3
    #39935256
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В версии 3 разработчики EF откатили DbQuery введенную в версии 2.
Теперь рекомендуется использовать старый добрый DbSet с конфигурированием entity.HasNoKey();

Однако у меня возникает проблема при создании миграции. После вызова команды Add-Migration, в нее добавляется код, на создание этих таблиц:


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
public DbSet<MyVal> MyVals { get; set; }

builder.Entity<MyVal>(entity =>
{
  entity
    .HasNoKey();
});

...

Add-Migration "Test"

...

protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "MyVals",
                columns: table => new
                {
                    Date = table.Column<DateTime>(nullable: false),
                    Value = table.Column<decimal>(nullable: false)
                },
                constraints: table =>
                {
                });
        }



Как это можно побороть ?
...
Рейтинг: 0 / 0
DbQuery и Миграции в EF 3
    #39935261
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для чего мне это нужно.

Мне нужно получить данные на стыке двух сущностей. Взяв часть полей от Модели1 и часть полей от Модели2. Для этого и создал новую сущность.
...
Рейтинг: 0 / 0
DbQuery и Миграции в EF 3
    #39935271
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrBitCoin,

https://docs.microsoft.com/ru-ru/ef/core/modeling/keyless-entity-types

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder
        .Entity<BlogPostsCount>(eb =>
        {
            eb.HasNoKey();
            eb.ToView("View_BlogPostCounts");
            eb.Property(v => v.BlogName).HasColumnName("Name");
        });
}



В конце концов вы можете из сгенерённой миграции лишний код убрать.
...
Рейтинг: 0 / 0
DbQuery и Миграции в EF 3
    #39935275
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так у меня вьюхи то нет. Я не вижу в ней необходимости.
Это некое вычислимое значение, на стыке двух сущностей. Используется в одном из методов, как некий справочник данных.

Что, без вьюхи не обойтись ? Или и без вьюхи сработает ?

И если я из миграции уберу этот код, он же его добавит в следующую миграцию.
Или не добавит из-за того, что запись в ModelSnapshot останется ? Это какой то хак получается...
...
Рейтинг: 0 / 0
DbQuery и Миграции в EF 3
    #39935278
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrBitCoin
Так у меня вьюхи то нет. Я не вижу в ней необходимости.
Это некое вычислимое значение, на стыке двух сущностей. Используется в одном из методов, как некий справочник данных.

Что, без вьюхи не обойтись ? Или и без вьюхи сработает ?


ToView инструктирует EF не генерировать код создания таблицы.
Вы же этого хотели? :)


MrBitCoin
И если я из миграции уберу этот код, он же его добавит в следующую миграцию.


Не добавит.


MrBitCoin
Или не добавит из-за того, что запись в ModelSnapshot останется ? Это какой то хак получается...


Верно.

Этот "хак" и был добавлен изначально, чтобы у вас было больше гибкости.
Конечно по возможности нужно избегать хаков, насколько это возможно.
...
Рейтинг: 0 / 0
DbQuery и Миграции в EF 3
    #39935281
MrBitCoin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

что то много хаков набегает ) Ну что ж поделать... Придется страдать.
...
Рейтинг: 0 / 0
DbQuery и Миграции в EF 3
    #39935310
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrBitCoin
hVostt,

что то много хаков набегает ) Ну что ж поделать... Придется страдать.


Да не надо страдать, просто делайте по-нормальному.

"Взяв часть полей от Модели1 и часть полей от Модели2" -- это что такое в вашей модели?

В СУБД это вьюха, запрос, который соединяет таблицы и берёт нужные поля.
В EF вы также можете такой запрос оформить.

А у вас что? Чего это за концепция такая? Почему оно в ModelBuilder? EF оперирует таблицами и вьюхами в последней версии.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DbQuery и Миграции в EF 3
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]