Как расширить существующую сущность в 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?


person zhengkai wang    schedule 11.04.2018    source источник
comment
Попробуйте сделать метод Up общедоступным.   -  person andreasnico    schedule 11.04.2018
comment
Но функция Up в классе миграции нулевая, что? Методы не могут быть нулевыми   -  person Camilo Terevinto    schedule 11.04.2018
comment
@andreasnico Метод генерируется автоматически   -  person zhengkai wang    schedule 11.04.2018
comment
Тело автоматически сгенерированных функций миграции пусто по умолчанию. Вы пишете, изменяете, добавляете, удаляете скрипты/код с вашими требованиями. Если ваша конфигурация AutoMigration = true достаточно одной миграции InitialMigration файлов. Если вы хотите управлять своим исходным кодом, вы должны написать up и down тело.   -  person Adem Catamak    schedule 11.04.2018
comment
Тот факт, что ваш класс наследуется от сохраняемой сущности, не означает, что EF сохранит его в БД. Вы должны добавить его в DbSet и настроить в ModelBuilder (ModelBuilder.Entity<MyEdition>().ToTable(nameof(MyEdition))). Затем EF распознает, что он должен создать шаблон оператора CreateTable в файле миграции.   -  person Georg Patscheider    schedule 11.04.2018


Ответы (1)


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

public virtual DbSet<MyEdition> MyEdition { get; set; }
person vivek nuna    schedule 11.04.2018
comment
Большое спасибо! Я сделал это! - person zhengkai wang; 12.04.2018