我是新的实体框架,并试图工作我的方式进入它。我正在与以下工作:
数据库类型: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)。
1条答案
按热度按时间whitzsjs1#
非常感谢@Svytoslav Danyliv为我指明了正确的方向!如果其他人也有类似的问题,有一个Microsoft页面,整齐地列出了引用实体的懒惰和急切加载的各种方法:https://learn.microsoft.com/en-us/ef/ef6/querying/related-data