Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有多个数据库的WPF实体框架_C#_Wpf_Entity Framework_Linq - Fatal编程技术网

C# 具有多个数据库的WPF实体框架

C# 具有多个数据库的WPF实体框架,c#,wpf,entity-framework,linq,C#,Wpf,Entity Framework,Linq,我正在开发一个使用不同数据库的WPF应用程序。从每个表单上的组合框中选择数据库,并用数据填充数据网格 我遇到的问题是:其中一个数据库有一个表Projects,其余数据库没有这个表。根据数据库的不同,有两个查询填充datagrid 我遇到的问题是,当启动应用程序并选择没有Project表的数据库,然后从组合框中选择包含Project表的数据库时,我得到以下错误: “System.NotSupportedException发生HResult=0x8013155 Message=LINQ to Ent

我正在开发一个使用不同数据库的WPF应用程序。从每个表单上的组合框中选择数据库,并用数据填充数据网格

我遇到的问题是:其中一个数据库有一个表
Projects
,其余数据库没有这个表。根据数据库的不同,有两个查询填充datagrid

我遇到的问题是,当启动应用程序并选择没有
Project
表的数据库,然后从组合框中选择包含
Project
表的数据库时,我得到以下错误:

“System.NotSupportedException发生HResult=0x8013155
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";
            }
        }
    }
private void GetTemplates()
{
列表结果=新列表();
if(CrsInterfaceDbDataContext.DbSelector==StringEnum.GetStringValue(DatabaseHelper.GiCrsUtms))
{
尝试
{
使用(var db=new crs interfacetedbdatacontext())
{
字符串projectCode=CrsInterfaceDbDataContext.projectCode;
if(projectCode!=null)
{
var templates=(来自db.ClientProducts中的c)
在c.ClientProductStatusID等于ps的db.ClientProductStatuses中加入ps
.ClientProductStatusID
在数据库中加入pr。c.ProjectCode上的项目等于pr.ProjectCode
在c.ClientProductStatusID等于s的db.ClientProductStatuses中加入s
.ClientProductStatusID
将pc加入到c.ClientProductID等于pc.ClientProductID的db.ClientProductComponents中
在c.FileNameID等于f.FileNameID的db.GiFilename中加入f
在f.FileGroupID等于fg.FileGroupID的db.GiFileGroups中加入fg
在fg.FileGroupID等于mp.FileGroupID的db.gimailparames中加入mp
在pc上的db.ClientComponent中加入cco.ClientComponentID等于cco.ClientComponentID
在cco上的db.GiComponentType中加入ct。ClientComponentTypeID等于ct
.ClientComponentTypeID
其中(c.ProjectCode==ProjectCode)
选择新的
{
c、 ClientProductID,
c、 ClientProductName,
StatusDescription=ps.说明,
c、 梅林地区,
FileName=f.FileName,
FileGroup=fg.Description,
c、 描述,
c、 双工,
国会议员Carrier,
mp.ServiceLevel,
pc数量,
ClientComponetType=ct.Description,
c、 项目代码,
项目名称
}).ToList();
DgTemplates.ItemsSource=模板;
LblTotalRecords.Content=“总记录数:”+templates.Count();
}
}
}
捕获(无效操作异常ex)
{
lblError.Content=“未选择数据库”;
}
}
其他的
{
尝试
{
使用(var db=new crs interfacetedbdatacontext())
{
var templates=(来自db.ClientProducts中的c)
在c.ClientProductStatusID等于ps的db.ClientProductStatuses中加入ps
.ClientProductStatusID
在c.ClientProductStatusID上的db.ClientProductStatuses中加入s。ClientProductStatusID等于s.ClientProductStatusID
将pc加入到c.ClientProductID等于pc.ClientProductID的db.ClientProductComponents中
在c.FileNameID等于f.FileNameID的db.GiFilename中加入f
在f.FileGroupID等于fg.FileGroupID的db.GiFileGroups中加入fg
在pc上的db.ClientComponent中加入cco.ClientComponentID等于cco.ClientComponentID
在cco上的db.GiComponentType中加入ct。ClientComponentTypeID等于ct
.ClientComponentTypeID
选择新的
{
c、 ClientProductID,
c、 ClientProductName,
StatusDescription=ps.说明,
c、 梅林地区,
FileName=f.FileName,
FileGroup=fg.Description,
c、 描述,
c、 双工,
服务级别=c级,
c、 承运人,