sqlite C#实体框架关系初学者问题

7eumitmz  于 11个月前  发布在  SQLite
关注(0)|答案(1)|浏览(125)

我是新的实体框架,并试图工作我的方式进入它。我正在与以下工作:
数据库类型: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; }
}


我的目标是用一个AccountEntry对象填充AuthorAccount字段,该对象是从使用字段Author的ID在Accounts表中进行查找的查找中派生出来的。
为此,我重载了OnModelCreating如下:

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


从我的DbContext派生类中删除DbSet<ReviewEntry>不会引发异常,但检索到的ReviewEntry数据集中的AuthorAccount属性总是null,我不知道为什么(ReviewEntry.Account确实包含Accounts表中可用的有效帐户ID)。

whitzsjs

whitzsjs1#

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

相关问题