c#如何制作动态Context,访问不同的数据库?

时间:2017-10-16 14:47:33

标签: asp.net .net c#-4.0

我试图用一个变量访问不同的上下文。请看之前的代码:

{{1}}

运行此时出现错误,因为_dynamicContext不能为null,那么如何创建可以更改为不同上下文的变量?

懒惰的解决方案是为每个客户创建不同的方法,但这不会非常有效,因为它将变得不可维护。

我将非常感谢你的帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

public interface IClientType
{
  public Store Store { get; }
}

public class ClientOneType : IClientType
{
  ...
}

public class ClientTwoType : IClientType
{
  ...
}

public Stores[] GetStores(Store storeModel)
{
    try
    {
        IClientType _dynamicContext = null; 
        ...

答案 1 :(得分:0)

ClientOneType和ClientTwoType都是从暴露名为" Store" ?
我猜他们没有,因为他们没有,所以没有办法使用相同的变量来编写你正在编写的LINQ查询,因为编译器必须能够确定可用的属性。

但是,您可以使用IQueryable动态构建查询

IQueryable<Stores> storeQry=null;

if (client == "Walmart")
    storeQry= _contextClientOne.Store.AsQueryable();               
else if(client == "CHS")
    storeQry= _contextClientTwo.Store.AsQueryable(); 

var stores = (from s in storeQry 
            where s.StoreName == storeModel.StoreName
            select p).ToArray();