c# - 如何使用 LINQ 在 db 上下文中为 3 个不同的表在 asp .net mvc 中编写通用查询?

标签 c# entity-framework linq generics dynamic

我有 3 个不同的表和 3 个不同的列,它们是主列。

 public class Student
    {
        public int StudentId { get; set; }
        public string Name { get; set; }
    }

    public class Teacher
    {
        public int TeacherId { get; set; }
        public string Name { get; set; }
    }

    public class Lesson
    {
        public int LessonId { get; set; }
        public string Name { get; set; }
    }


var _context = new MyContext()

_context.Student(x=>x.StudentId == someValue)

_context.Teacher(x=>x.TeacherId == someValue)

_context.Lesson(x=>x.TeacherId == someValue)

只改变表名和键值。

使用泛型方法的最佳方式是什么?

最佳答案

创建一个通用存储库,而不是像这样用每个类的本地存储库继承它

public class GeneralRepository<T> where T : class
    {
        private MyContext Context = new MyContext();
        protected DbSet<T> Dbset { get; set; }
        public GeneralRepository()
        {
           Dbset = Context.Set<T>();
        }

    public T SelectByID(int? id)
    {
        var Record = Dbset.Find(id);
        return (Record);
    }

  public class StudentRepositoy :GeneralRepository<Student>
    {



    }

创建一个本地存储库的对象并调用函数

在需要调用函数的地方创建学生存储库的对象

StudentRepositoy repository = new StudentRepositoy();
var result = repository.SelectByID(3);

关于c# - 如何使用 LINQ 在 db 上下文中为 3 个不同的表在 asp .net mvc 中编写通用查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49705988/

相关文章:

c# - Entity Framework 对象列表包含对象 lambda 列表

c# - MySQl Entity Framework C# 外键数据加载延迟错误

php - 找不到 xxxxBundle\Entity\BookPermit 对象。 (404 未找到)-symfony

c# - Visual Studio 2017 在应用程序设置中找不到连接字符串

c# - WebBrowser 控制文档在 iframe 和 Javascript 完成后完成

c# - 您最喜欢用什么方法来检查 HTML COLOR 是否有效?

c# - EntityFramework7 - 约定、属性和配置

c# - 动态构建的 LINQ 查询会根据其构建方式提供不一致的结果

c# - 如何优化 linq 查询以在不合并结果的情况下按价格对日期进行分组

c# - 如何删除 Visual Studio C# Express 中的片段?