c# - 一对一关系实体框架
问题描述
我有两张表,一张是客户列表,另一张是活跃与否。我想将它们链接到实体框架,但是,我很挣扎。这两个表已经设置好,必须主键或外键。
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# 的新手,所以有点学习曲线!
推荐阅读
- c# - 我错过了什么?从“保存”操作传递的值始终为 Null - MVC
- twilio - 如何访问在 twilio 中购买的 twilio 电话号码?
- mysql - MySQL视图是否将所有连接表的所有数据加载到内存中
- java - 如何在 JSP 和 servlet 之间共享数据
- lua - 在 Luajit 脚本中加载字节码是否比加载字符串慢?
- javascript - 由 jinja2 和烧瓶创建的 html 上的 javascript 根本不起作用
- azure-devops - Azure 管道构建阶段验证
- python - 如何使用python执行click()命令但在“tableau”上
- javascript - 如何在 Typescript 中使用 break 语句
- python - Python - 将字符串值连接到数据框中的第一行