我试图创建一个简单的工具,从两个数据库和Active中提取数据。我正在努力解决的问题是简单地将这些数据合并到一个页面上。
我一直在尝试任何我能想到的方法来完成这个任务,但最终的问题是如何填充来自另一个控制器/上下文/模型的数据?
也许我已经想过了,这应该是一个非常简单的任务(编辑:对于在此之前没有花时间遵循MVC的人来说很容易)。我目前的状况:
为了简单起见,我暂时不考虑Active Directory。因此,我有两个控制器、两个视图、两个上下文和每个表的模型。他们分开工作很好。为了简单起见,唯一的共同点是可以使用相同的搜索字符串(员工的唯一标识符)搜索两个数据源。
ConnectionDatabase跟踪有关连接到我们使用的服务的机器的信息,例如用户名、计算机名称等。
InventoryDatabase是一种库存管理工具,人类输入的数据。
这里的关键信息是,在这一点上,我只是试图在一个页面上显示来自这两个数据库的数据。我没有使用联接,也没有试图将数据或与这些数据相关的任何东西关联起来。本质上,如果我只需要从Database1获取视图和从Database2获取视图,并使它们都出现在相同的视图中,那么坦白地说,这就是我所需要的。两个完全独立的实体恰好出现在同一个页面上。
搜索函数允许用户通过数字上的单个符号进行搜索。这个数字存储在两个数据库中,我希望结果是独立的。例如,左列显示来自ConnectionDatabase匹配SSO的所有记录,右边列显示来自InventoryDatabase匹配SSO的所有记录。
ConnectionDatabase
| - Table1
| - ClientName
| - SSO
| - Other Info
InventoryDatabase
| - Table1
| - Serial Number
| - SSO
编辑:当创建控制器时,我的理解是将上下文发送给它,因此将其限制为单个上下文。GetConnectionAssets函数工作得很好,因为它使用的当然是ConnectionContext AClient模型。
现在,我想加入InventoryDatabase,它有自己的InventoryDatabaseContext和InventoryDatabaseModel。复制GetConnectionAssets并将其简单地指向InventoryDatabaseContext并不有效,因为整个控制器都专用于ConnectionContext。
为了进一步解释这一点,下面是我的~/Lookup/BySSO控制器:
namespace MyApp.Controllers
{
public class BySSOController : Controller
{
private readonly ConnectionContext _context;
public BySSOController(ConnectionContext context)
{
_context = context;
}
public ActionResult PartialView()
{
return View();
}
public List<AClient> GetConnectionAssets(string SSO)
{
var aClients = from a in _context.AClient select a;
aClients = aClients.Include(a => a.AUserDefined)
.OrderByDescending(a => a.LastConnectDate);
if (!String.IsNullOrEmpty(SSO))
{
aClients = aClients.Where(a => a.AUserDefined.Sso.Equals(SSO))
.Include(a => a.AUserDefined);
}
return aClients.ToList();
}
public PartialViewResult RenderAClients(string SSO)
{
return PartialView(GetConnectionAssets(SSO));
}
}
}
编辑:,我认为更好的描述方法是我正在构建一个仪表板。因此,设想一个事件系统仪表板,它可以在单个页面上显示度量标准、当前打开的票证、关于用户的信息以及可能来自外部源的一些数据。对于代码本身来说,它可能是完全无关的数据。
编辑:既然我很难解释这件事,并且让自己感到沮丧,那么让我把它放在一张图片中吧。我希望这个页面看起来像这样:http://imgur.com/a/tgZju
不过,我想把它放在一个浏览器窗口而不是两个浏览器窗口里。:)
发布于 2017-06-22 16:00:32
有两种方法可以处理这一问题:
https://stackoverflow.com/questions/44702942
复制相似问题