实体框架:来自服务的导航属性

本文关键字:导航 属性 服务 框架 实体 | 更新日期: 2023-09-27 18:14:48

我的一些Db表已经移出了我的数据库,它们的数据现在可以通过API调用提供给我。因此,在下面的Student类中,Subject表已被移出,我仍然有SubjectId,我必须用它查询API并获取Subject数据。

public class Student
{ 
    public Subject Subject { get; set; }
}

有什么我可以做与实体框架,通过它我不必改变我的代码,并访问导航属性student.Subject将查询我的API的数据,并返回给我吗?

实体框架:来自服务的导航属性

最简单的方法是将Subject属性标记为[NotMapped],这样EF就不会尝试搜索DB表

然后写Property get来查询API。这将涵盖您想要的功能。
    public class Student
    {
        [NotMapped]
        public Subject Subject { get {
            return QueryAPIHere(this.SubjectId);
        } set; }
    }

如果你想避免每次访问属性时调用API,你可以将它存储在私有变量

    [NotMapped]
    private Subject _subject
    public Subject Subject
    {
        get
        {
            if (this._subject == null)
                this._subject = QueryAPI(this.SubjectId);
            return this._subject;
        }
        set;
    }