Индивидуальные отношения Entity Framework - PullRequest
0 голосов
/ 28 июня 2018

У меня есть две таблицы: одна со списком клиентов, а другая независимо от того, активны они или нет. Я хочу связать их с Entity Framework, однако я изо всех сил. Две таблицы уже настроены и должны иметь первичные ключи или внешние ключи.

namespace DataWarehouse.Models
{
    public class DatabaseList
    {
        [Key]
        public string STARDB { get; set; }
        public int DBClientID { get; set; }
        public string ClientName { get; set; }
        public DatabaseStatus DatabaseStatus { get; set; }

        public ICollection<PayComponents> PayComponents { get; set; }
         = new List<PayComponents>();
    }

    public class DatabaseStatus
    {
        [Key]
        public string STARDB { get; set; }
        public string STATUS { get; set; }

        public DatabaseList DatabaseList { get; set; }
    }

    public class DatabaseContext : DbContext
    {
        public DatabaseContext(DbContextOptions<DatabaseContext> options)
            : base(options)
        {
        }

        public DbSet<DatabaseList> DatabaseList { get; set; }
        public DbSet<DatabaseStatus> Status { get; set; }
        public DbSet<PayComponents> PayComponents { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<DatabaseList>()
                .HasOne(p => p.DatabaseStatus)
                .WithOne(i => i.DatabaseList)
                .HasForeignKey<DatabaseStatus>(k => k.STARDB);
        }
    }
}

Я надеялся, что Entity Framework увидит столбцы STARDB и заметит, что они одинаковы в обеих таблицах и соответствуют им таким образом. Все, что я хочу, это добавить столбец Status из DatabaseStatus в таблицу Databaselist.

Спасибо.

1 Ответ

0 голосов
/ 10 июля 2018

удалось выяснить это. Моя база данных была настроена правильно. Однако я забыл оператор include в своем классе Repository.cs.

    public IEnumerable<DatabaseList> GetAllClients()
    {
        _logger.LogInformation("Get all clients was called");

        var clients = _ctx.DatabaseList
                       .Include(d => d.DatabaseStatus)
                       .OrderBy(p => p.ClientName)
                       .ToList();

        return clients;
    }

Все еще новичок в C #, так что немного обучения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...