Проблема с двумя DbSet двух типов A и B с B, который наследуется от A - PullRequest
1 голос
/ 03 июля 2019

У меня есть два класса Profile и JobProfile, JobProfile наследуют от Profile.Я использую Entity Framework 6, и в моем dbContext у меня есть два DbSet:

public DbSet<JobProfile> JobProfiles { get; set; }
public DbSet<Profile> Profiles { get; set; }

У меня также есть DAL:

public class DAL : IDisposable
{
        BddContext db;
        public DAL()
        {
            db = new BddContext();
        }

        public async Task<ObservableCollection<Profile>> GetProfiles()
        {
            var oc = new ObservableCollection<Profile>();
            var profiles = await(db.Profiles
                        .Include("FolderInformationAction")
                        .Include("FolderInformationStore")
                        .ToListAsync());
            foreach (var item in profiles)
            {
                oc.Add(item);
            }
            return oc;
        }

        public async Task<ObservableCollection<JobProfile>> GetJobProfiles()
        {
            var oc = new ObservableCollection<JobProfile>();
            var profiles = await (db.JobProfiles
                        .Include("FolderInformationAction")
                        .Include("FolderInformationStore")
                        .ToListAsync());
            foreach (var item in profiles)
            {
                oc.Add(item);
            }
            return oc;
        }
        public void Dispose()
        {
            db.Dispose();
        }
}

И когда я вызываю GetProfiles, он возвращает Profiles и JobProfiles.элементы, но когда я вызываю GetJobProfiles, он возвращает только элементы JobProfiles.

Итак, вопрос в том, как я могу сделать различие между двумя DbSet?кажется, что они связаны между собой.

1 Ответ

0 голосов
/ 06 июля 2019

Я думаю, что TPH делает это по умолчанию. Используйте это, чтобы урезать или, возможно, TPT будет делать то, что вы хотите по определению.

var profiles = await(db.Profiles
    .Where(q => !(q is JobProfile)                        
    .Include("FolderInformationAction")
    .Include("FolderInformationStore")
    .ToListAsync());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...