簡體   English   中英

一對一關系實體框架

[英]One-to-one relationship 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表中。

謝謝。

設法弄清楚了。 我的數據庫設置正確。 但是,我忘記了Repository.cs類中的include語句。

    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#的新手,因此學習起來有點困難!

暫無
暫無

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

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