【发布时间】:2017-10-25 15:31:43
【问题描述】:
我正在开发一个使用不同数据库的 WPF 应用程序。数据库是从每个表单上的组合框中选择的,并用数据填充数据网格。
我遇到的问题是:其中一个数据库有一个表Projects,其余的数据库没有这个表。根据数据库,有两个查询填充数据网格。
我遇到的问题是当启动应用程序并选择没有Project 表的数据库,然后从组合框中选择具有project 表的数据库时,我收到以下错误:
“System.NotSupportedException 发生 HResult=0x80131515
Message=LINQ to Entities 不支持指定的类型成员“ProjectCode”。仅支持初始化器、实体成员和实体导航属性。
这是我的代码:
private void GetTemplates()
{
List<string> result = new List<string>();
if (CrsInterfaceDbDataContext.DbSelector == StringEnum.GetStringValue(DatabaseHelper.GiCrsUtms))
{
try
{
using (var db = new CrsInterfaceDbDataContext())
{
string projectCode = CrsInterfaceDbDataContext.ProjectCode;
if (projectCode != null)
{
var templates = (from c in db.ClientProducts
join ps in db.ClientProductStatuses on c.ClientProductStatusID equals ps
.ClientProductStatusID
join pr in db.Projects on c.ProjectCode equals pr.ProjectCode
join s in db.ClientProductStatuses on c.ClientProductStatusID equals s
.ClientProductStatusID
join pc in db.ClientProductComponents on c.ClientProductID equals pc.ClientProductID
join f in db.GiFilename on c.FileNameID equals f.FileNameID
join fg in db.GiFileGroups on f.FileGroupID equals fg.FileGroupID
join mp in db.GiMailParamses on fg.FileGroupID equals mp.FileGroupID
join cco in db.ClientComponent on pc.ClientComponentID equals cco.ClientComponentID
join ct in db.GiComponentType on cco.ClientComponentTypeID equals ct
.ClientComponentTypeID
where (c.ProjectCode == projectCode)
select new
{
c.ClientProductID,
c.ClientProductName,
StatusDescription = ps.Description,
c.MailingRegion,
FileName = f.Filename,
FileGroup = fg.Description,
c.Description,
c.Duplex,
mp.Carrier,
mp.ServiceLevel,
pc.Qty,
ClientComponetType = ct.Description,
c.ProjectCode,
pr.ProjectName
}).ToList();
DgTemplates.ItemsSource = templates;
LblTotalRecords.Content = "Total records: " + templates.Count();
}
}
}
catch (InvalidOperationException ex)
{
lblError.Content = "Database not selected";
}
}
else
{
try
{
using (var db = new CrsInterfaceDbDataContext())
{
var templates = (from c in db.ClientProducts
join ps in db.ClientProductStatuses on c.ClientProductStatusID equals ps
.ClientProductStatusID
join s in db.ClientProductStatuses on c.ClientProductStatusID equals s.ClientProductStatusID
join pc in db.ClientProductComponents on c.ClientProductID equals pc.ClientProductID
join f in db.GiFilename on c.FileNameID equals f.FileNameID
join fg in db.GiFileGroups on f.FileGroupID equals fg.FileGroupID
join cco in db.ClientComponent on pc.ClientComponentID equals cco.ClientComponentID
join ct in db.GiComponentType on cco.ClientComponentTypeID equals ct
.ClientComponentTypeID
select new
{
c.ClientProductID,
c.ClientProductName,
StatusDescription = ps.Description,
c.MailingRegion,
FileName = f.Filename,
FileGroup = fg.Description,
c.Description,
c.Duplex,
ServiceLevel = c.Class,
c.Carrier,
}).ToList();
DgTemplates.ItemsSource = templates;
LblTotalRecords.Content = "Total records: " + templates.Count();
}
}
catch (InvalidOperationException ex)
{
lblError.Content = "Database not selected";
}
}
}
【问题讨论】:
-
连接字符串可能包含默认表。因此,您可能需要从连接字符串中删除该表。
标签: c# wpf entity-framework linq