传递不同的DatabaseEntities作为参数

时间:2019-01-09 13:25:21

标签: c# asp.net-mvc entity-framework

已经看了很多遍,所以要么我愚蠢地了解别人在做什么,要么我根本没有找到我需要的解决方案。

我正在一个项目中,我有9个不同的数据库。它们包含许多相同的数据类型,但是它们是不同的。

让我们说所有9个数据库都包含学生,但它们都位于不同的学校,彼此之间没有真正的联系。他们都有一个“学生”表,您可以在其中获得学生的姓名等。

然后我有一种获取学生对象的方法

public Student GetStudentFromId(int id)
    {
        using (var context = new StudentEntities())
        {
            var query = from stud in context.Students
                        where stud.studentId == id
                        select stud;

            return query.FirstOrDefault<Student>();

        }
    }

所以我的问题来了-我需要能够为所有数据库调用此方法,但是我显然不想让代码在每个存储库中重复9次,唯一的区别是实体。 / p>

让我说我有这些东西,他们总数继续达到9。

StudentEntities1 entity1 = new StudentEntities1();
StudentEntities2 entity2 = new StudentEntities2();

我是否有办法将databaseEntity传递给方法,所以会像这样:

public Student GetStudentFromId(int id)
    {
        using (var context = GetStudentEntity("someIdForTheDifferentEntities"))
        {
            var query = from stud in context.Students
                        where stud.studentId == id
                        select stud;

            return query.FirstOrDefault<Student>();

        }
    }

然后返回实体的方法:

 public static DbContext GetStudentEntity(string entityId)
    {

        if (entityId.Equals("1"))
        {
            StudentEntities1 entity = new StudentEntities1 ();
            return entity;
        }
        if (entityId.Equals("2"))
        {
            StudentEntities2 entity = new StudentEntities2 ();
            return entity;
        }
        else
        {
            return null;
        }
    }

这可能是我只需要重做整个项目的地方,但是目前我正在为每个包含数据库模型的单个数据库创建一个类库(现在是9中2个存储库,因为它将愚蠢地沿着这条路前进。

上面的方法有问题,在知道数据库包含哪些表的地方我没有得到实际的参考。

如果您需要其他信息,请告诉我-如果您提出了比当前更好的解决方案的建议,我也将不胜感激。

干杯。

0 个答案:

没有答案