C#实体框架关系入门问题

问题描述 投票:0回答:1

我是实体框架的新手,并试图以自己的方式进入它。我正在处理以下内容:

数据库类型:SQLite

2 个表,使用

生成
CREATE TABLE Accounts 
(
    AccountId STRING, 
    DisplayName STRING, 
    PRIMARY KEY (AccountId)
)

CREATE TABLE Reviews 
(
    Author STRING, 
    CreatedOn STRING, 
    Id INTEGER, 
    PRIMARY KEY(Id)
)

C# 中的实体:

[PrimaryKey(nameof(AccountId))]
class AccountEntry 
{
    public string? AccountId { get; set; }
    public string? DisplayName { get; set; }
}

[PrimaryKey(nameof(Id))]
class ReviewEntry
{
    public string? Author { get; set; }
    public string? CreatedOn { get; set; }
    public int Id { get; set; }
    public AccountEntry? AuthorAccount { get; set; }
}

我的目标是用从查找派生的

AuthorAccount
对象填充
AccountEntry
字段,该对象使用字段
Author
中的 Id 在帐户表中进行查找。

为此,我已超载

OnModelCreating
,如下:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<ReviewEntry>()
        .HasOne(e => e.AuthorAccount)
        .WithOne()
        .HasForeignKey<ReviewEntry>(e => e.Author);
}

从我的

DbSet<ReviewEntry>
派生类访问
DbContext
不会引发异常,但检索到的
AuthorAccount
数据集中的
ReviewEntry
属性始终为
null
,我无法弄清楚为什么(
 ReviewEntry.Account
确实包含
Accounts
表中可用的有效帐户 ID。

c# sqlite entity-framework-core
1个回答
0
投票

非常感谢@Svytoslav Danyliv 为我指明了正确的方向!如果其他人遇到类似问题,有一个 Microsoft 页面整齐地列出了引用实体的延迟加载和急切加载的各种方法:https://learn.microsoft.com/en-us/ef/ef6/querying/lated-数据

© www.soinside.com 2019 - 2024. All rights reserved.