未映射和显式加载或延迟加载EF内核

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

我正在使用EF Core API,其中Explicitly / Lazy loaded的属性很少。但是当我尝试时,它抛出了一些异常,

型号:

public int NationalityId { get; set; }

[NotMapped]
public Country Nationality { get; set; }

Repo:

RepositoryContext.Entry(user).Reference(x => x.Nationality).Load();

这让我"Property Nationality cannot be found on the entity User"

也尝试了virtual而不是[NotMapped]和这个,

modelBuilder.Entity<User>().Ignore(x => x.Nationality);

当我删除"[NotMapped]"属性并尝试时,出现以下错误,

"Column name NationalityId1 cannot be found" ==> SQLException

对于延迟加载也发生了同样的情况-我使用ILazyLoader,并且尝试过,

型号:

 [NotMapped]
        public Country Nationality
        {
            get => LazyLoader?.Load(this, ref _nationality);
            set => _nationality = value;
        }

有人可以帮助我解决问题并同时使用两种数据加载技术吗?

注意:我正在使用EFCore 2.2.4

lazy-loading asp.net-core-2.0 repository-pattern ef-core-2.2
1个回答
0
投票

而不是忽略/ NotMap相关的实体,您应该教EF实体之间的关系。当您使用DataAnottation属性时。您可以使用ForeignKeyAttribute

[ForeignKey("Nationality")]
public int NationalityId { get; set; }

public Country Nationality { get; set; }
© www.soinside.com 2019 - 2024. All rights reserved.