我在SQL Server中创建了我的数据库,然后在Visual Studio中使用我的数据库创建了一个实体数据模型。除了一个特定的视图外,一切都很好,我的所有表和视图都生成了。此视图与其他视图之间的区别在于我在视图语法中使用UNION ALL
。请参阅下面的SQL视图设置,下面是我在Visual Studio中的代码,它抱怨缺少v_contactMasterList
:
select clicontfin_cli_fk as clientPK,
contfin_firstName as FirstName,
contfin_lastName as LastName,
contfin_institutionName as InstitutionName,
contfin_contactType as ContactType
from f_linkClientContactFinancial lccf
inner join f_contactFinancial cf on lccf.clicontfin_contfin_fk = cf.contfin_pk
UNION ALL
select clicontins_cli_fk as clientPK,
contins_agentFirstName as FirstName,
contins_agentLastName as LastName,
contins_agencyName as InstitutionName,
contins_contactType as ContactType
from f_linkClientContactInsurance lcci
inner join f_contactInsurance ci on lcci.clicontins_contins_fk = ci.contins_pk
UNION ALL
select clicontleg_cli_fk as clientPK,
contleg_FirstName as FirstName,
contleg_LastName as LastName,
contleg_firmName as InstitutionName,
contleg_contactType as ContactType
from f_linkClientContactLegal lccl
inner join f_contactLegal cl on lccl.clicontleg_contleg_fk = cl.contleg_pk
UNION ALL
select clicont_cli_fk as clientPK,
cont_FirstName as FirstName,
cont_LastName as LastName,
NULL as InstitutionName,
cont_contactType as ContactType
from f_linkClientContactPersonal lccp
inner join f_contactPersonal cp on lccp.clicont_cont_fk = cp.cont_pk
我的C#代码在下面 - 请注意,mainDB.v_contactMasterList.ToList()
所在的位置是问题所在。它根本不识别v_contactMasterList
。它识别所有其他数据库对象,例如我的表和我的其他视图:
public ActionResult Index()
{
var viewModel = new ClientContactInformationViewModel
{
ClientContactRecords = mainDB.v_contactMasterList.ToList()
};
return View();
}
另外,请注意我声明SelectLifeManagementDBEntites
的位置,它是如何看到的,它是从我的实体数据模型创建的,以及我的其他每个表和视图中的每一个。
当我创建此视图时,我只是将我的SQL语法复制并粘贴到视图SQL区域中,然后执行它。然后我保存了它。我确实得到一个对话框,说明包含UNION ALL运算符的视图无法在图表布局中以图形方式表示。这没关系,但我不知道这是否可能导致问题。请帮忙????提前谢谢..
答案 0 :(得分:0)
事实证明,我必须在视图中包含一个主键字段才能在我的数据模型中显示。