MVC - 将数据库表动态绑定到 var

问题描述

我继承了一个设计糟糕的数据库,不得不将旧代码转换为 MVC & EF。 我希望能够从 SWITCH...CASE 中动态地将数据库表名分配给变量。 桌子设计完全一样,但不同的业务领域有不同的桌子! 我该怎么做呢?我可能错过了一些非常基本的东西! 我目前拥有的代码如下所示。

声明数据库

private CDBEntries db = new CDBEntries();

ActionResult 下面

var cmembs = db.XXXcmembs;

switch (returnValue.toupper())
{
    case "CRI":
        cmembs = db.YYYsmembs;
        break;
    default:
        break;
}
cSearchQuery = (from CCM in cmembs
                join CC in cDB on CCM.name equals CC.cname into CGroup
                from CC in CGroup.DefaultIfEmpty()
                select new CSearch()
                {
                    id = CCM.id,Name = CCM.name,Status = CCM.status,cid = CC.id
                });

实时代码中有更多连接,但为了简单起见,我将代码简化为基本代码

解决方法

不要认为您可以像那样使用 var。 Var 是强类型并在编译类型中声明。

var (C# reference)

隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器会确定类型

您也许可以使用 dynamic,这是在运行时推断的。

Walkthrough: Creating and Using Dynamic Objects

动态对象在运行时而不是在编译时公开属性和方法等成员。

如果您遇到困难,请告诉我,我会在今天晚些时候从我这边看看是否可行。

,

经过进一步研究,我意识到我想做的事与使用 EF 的原因(即编译时验证)背道而驰。 由于所有表格都具有相同的布局,我将把它们“合并”到 1 个表格中,并用一个额外的列来指定区域。