C# 如何在通用存储库中添加其他特定于实体的方法

C# 如何在通用存储库中添加其他特定于实体的方法,c#,entity-framework,entity-framework-6,unit-of-work,generic-collections,C#,Entity Framework,Entity Framework 6,Unit Of Work,Generic Collections,我已经了解了通用存储库和工作单元。 但我不清楚具体实体的方法。 例如,我有实体国家和城市 通过使用通用存储库,我可以使用Get()或GetById(),这将返回我country或city: var countries = unitOfWork.CountryRepository.Get(); var cities = unitOfWork.CityRepository.Get(); 但是Country有一个CountryCode字段,我想通过该字段获得Country,所以我想我必须在泛型存

我已经了解了通用存储库和工作单元。
但我不清楚具体实体的方法。
例如,我有实体
国家
城市

通过使用通用存储库,我可以使用
Get()
GetById()
,这将返回我countrycity

 var countries = unitOfWork.CountryRepository.Get();
 var cities = unitOfWork.CityRepository.Get();
但是Country有一个
CountryCode
字段,我想通过该字段获得Country,所以我想我必须在泛型存储库类中添加新方法,并像这样调用它:

var countries = unitOfWork.CountryRepository.GetByCountryCode(string code);
但这意味着我也可以这样做:

var countries = unitOfWork.CityRepository.GetByCountryCode(string code);
我在这里感到困惑,我知道我错过了一些东西。
如何使用通用存储库并添加其他特定于实体的方法?

更新

我使用其他方法创建存储库类:

public class CountryRepository : GenericRepository<Country>
    {
        public CountryRepository(MainContext context) : base(context) { }

        public virtual Country GetByCode(string code)
        {
            return dbSet.Where(c => c.Code == code).First();
        }
    }

如果您想要特定于某个实体的方法,那么您可以在该实体的存储库中声明这些方法,即
GetByCountryCode
方法在
CountryRepository
类中声明,不是泛型基类。

我在存储库中声明了特定于实体的其他方法,但在控制器中看不到新方法。请查看我的更新问题。我没有将返回类型从属性更改为
CountryRepository
。Tnx
public class UnitOfWork : IDisposable
    {
        private MainContext context = new MainContext();        
        private ApplicationUserRepository applicationUserRepository;
        private CountryRepository countryRepository;

        public GenericRepository<Country> CountryRepository
        {
            get
            {

                if (this.countryRepository == null)
                {
                    this.countryRepository = new CountryRepository(context);
                }
                return countryRepository;
            }
        }
var country = unitOfWork.CountryRepository. // no GetByCode()