我有两个表,一个是客户列表,另一个是客户是否活跃。我想将它们链接到实体框架,但是,我很挣扎。这两个表已经设置好了,必须有主键或外键。
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);
}
}
}
我希望实体框架会看到列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# 还是新手,所以有点学习曲线!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句