簡體   English   中英

擴展實體並使用IRepository

[英]Extending an Entity and using IRepository

我們正在使用ASP.NET Zero / BoilerPlate,並且在擴展非抽象實體並使用IRepository訪問數據時遇到了以下問題。

我已經將OrganizationUnit實體擴展到OrganisationUnit,以便可以添加一些其他屬性,即:

public class OrganisationUnit : OrganizationUnit
    {
        public virtual bool IsCompany { get; set; }

        /// <summary>
        /// Initializes a new instance of the <see cref="OrganisationUnit"/> class.
        /// </summary>
        public OrganisationUnit()
        {

        }

        /// <summary>
        /// Initializes a new instance of the <see cref="OrganisationUnit"/> class.
        /// </summary>
        /// <param name="tenantId">Tenant's Id or null for host.</param>
        /// <param name="displayName">Display name.</param>
        /// <param name="parentId">Parent's Id or null if OU is a root.</param>
        public OrganisationUnit(int? tenantId, string displayName, long? parentId = null) : base(tenantId, displayName, parentId)
        {

        }
    }

但是,當我們嘗試使用IRepository時,沒有任何結果,例如:

public class OrganisationUnitManager : IDomainService
{
    private readonly IRepository<OrganisationUnit, long> _organisationUnitRepository;
    private readonly IRepository<Abp.Organizations.OrganizationUnit, long> _organizationUnitRepository;

    public OrganisationUnitManager(IRepository<OrganisationUnit, long> organisationUnitRepository, IRepository<Abp.Organizations.OrganizationUnit, long> organizationUnitRepository)
    {
        _organisationUnitRepository = organisationUnitRepository;
        _organizationUnitRepository = organizationUnitRepository;
    }

    public async Task<Abp.Organizations.OrganizationUnit> GetOUForEmployee(Employee.Employee employee)
    {
        var orgUnit = _organisationUnitRepository.FirstOrDefault(ou => ou.Id == employee.OrganizationUnitId);
        var orgS = _organisationUnitRepository.GetAll(); // Returns 0 Results - with the extended columns
        var orgZ = _organizationUnitRepository.GetAll(); // Returns All Records in AbpOrganizationUnits without the extended columns.
        return orgUnit;
    }
}

我試圖在GetOUForEmployee中做的是找到OrganisationUnit,而不是OrganizationUnit。 但是什么也沒找到。 使用.GetAll()會突出問題,因為此處的IRepository不會在擴展表上返回任何結果。

您需要將新的DbSet添加到您的DbContext。 並添加遷移。

public class AbpZeroTemplateDbContext : AbpZeroDbContext<Tenant, Role, User, AbpZeroTemplateDbContext>, IAbpPersistedGrantDbContext
{
     //...

     public virtual DbSet<OrganisationUnit> MyOrganizationUnits { get; set; }

     //...
}

擴展OrganizationUnit的步驟

  • 創建一個類似ExtendedOrganizationUnit的新類,該類繼承自OrganizationUnit
  • 將用於ExtendedOrganizationUnit的新DbSet添加到DbContext。
  • 添加添加的遷移
  • 更新數據庫(成功看到更改)

參見https://forum.aspnetboilerplate.com/viewtopic.php?f=5&t=11109&hilit=extend

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM