Как расширить существующую сущность в asp.net boilerplate?

Я прочитал документацию по Расширение неабстрактных сущностей и сделал это соответственно (унаследовал объект Edition). Но функция Up в классе миграции пуста.

MyEdition класс ниже:

using System;
using System.Collections.Generic;
using System.Text;
using Abp.Application.Editions;

namespace Boilerplate.Editions
{
    public class MyEdition: Edition
    {
        public virtual long Price { get; set; }
    }
}

Миграция создается автоматически с помощью команды Add-Migration Entity Framework Core.

Моя миграция ниже:

public partial class Added_MyEdition_Entity : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {

    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {

    }
}

Итак, как расширить существующую сущность в ASP.NET Boilerplate?

Попробуйте сделать метод Up общедоступным

andreasnico 11.04.2018 14:04

"Но функция Up в классе миграции нулевая", что? Методы не могут быть нулевыми

Camilo Terevinto 11.04.2018 14:05

@andreasnico Метод генерируется автоматически

zhengkai wang 11.04.2018 14:12

По умолчанию тело автоматически сгенерированных функций миграции пустое. Вы пишете изменяете, добавляете, удаляете скрипты / код с вашими требованиями. Если ваша конфигурация - AutoMigration = true, достаточно одного файла миграции InitialMigration. Если вы хотите управлять своим источником, вам нужно написать тело up и down.

Adem Catamak 11.04.2018 14:33

Тот факт, что ваш класс наследуется от устойчивой сущности, не означает, что EF сохранит его в БД. Вы должны добавить его в DbSet и настроить в ModelBuilder (ModelBuilder.Entity<MyEdition>().ToTable(nameof(MyEdition))‌). Затем EF распознает, что он должен добавить оператор CreateTable в файл миграции.

Georg Patscheider 11.04.2018 14:39
0
5
903
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

DBContext не имеет представления об этом новом классе, поэтому вам нужно добавить следующую строку в свой класс DBContext.

public virtual DbSet<MyEdition> MyEdition { get; set; }

Большое спасибо! Я сделал это!

zhengkai wang 12.04.2018 06:38

Другие вопросы по теме