已经看了很多遍,所以要么我愚蠢地了解别人在做什么,要么我根本没有找到我需要的解决方案。
我正在一个项目中,我有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个存储库,因为它将愚蠢地沿着这条路前进。
上面的方法有问题,在知道数据库包含哪些表的地方我没有得到实际的参考。
如果您需要其他信息,请告诉我-如果您提出了比当前更好的解决方案的建议,我也将不胜感激。
干杯。