У меня есть модель Entity Framework по умолчанию, в которой хранятся все мои таблицы по умолчанию для моего продукта, и что все клиенты имеют общий доступ. Однако у некоторых клиентов у меня есть несколько пользовательских таблиц, которые существуют только для этого клиента, но они относятся к таблицам продукта по умолчанию. У меня есть вторая модель Entity Framework для хранения этих пользовательских таблиц.
У меня вопрос, как я могу сделать запрос Linq to Entities, используя Join, чтобы я мог связать сущности из моей модели по умолчанию с таблицами в моей пользовательской модели? Я не возражаю против того, чтобы не иметь свойства Navigation от пользовательского объекта до объектов в модели по умолчанию; Мне просто нужен способ запросить обе модели в одном запросе.
Ниже приведен код:
using (ProductEntities oProductDB = new ProductEntities())
{
using (ProductEntitiesCustom oProductCustomDB = new ProductEntitiesCustom())
{
var oConsulta = oProductCustomDB.CTBLCustoms
.Where(CTBLCustoms => CTBLCustoms.IDWOHD >= 12)
.Join(oProductDB.TBLResources,
CTBLCustoms => new
{
CTBLCustoms.IDResource
},
TBLResources => new
{
TBLResources.IDResource
},
(CTBLCustoms, TBLResources) => new
{
IDCustom = CTBLCustoms.IDCustom,
Descricao = CTBLCustoms.Descricao,
IDWOHD = CTBLCustoms.IDWOHD,
IDResource = CTBLCustoms.IDResource,
ResourceCode = TBLResources.Code
});
gvwDados.DataSource = oConsulta;
}
}
Я получаю The specified LINQ expression contains references to queries that are associated with different contexts
ошибку.
РЕДАКТИРОВАТЬ
Могу ли я объединить 2 ObjectContext
в третий, а затем выполнить запрос Linq?
Tks
EDIT
Ниже приведен код, который работал с использованием предложенного решения AsEnumerable ():
using (ProductEntities oProductDB = new ProductEntities())
{
using (ProductEntitiesCustom oProductCustomDB = new ProductEntitiesCustom())
{
var oConsulta = (oProductCustomDB.CTBLCustoms.AsEnumerable()
.Where(CTBLCustoms => CTBLCustoms.IDWOHD >= 12)
.Join(oProductDB.TBLResources,
CTBLCustoms => new
{
CTBLCustoms.IDResource
},
TBLResources => new
{
TBLResources.IDResource
},
(CTBLCustoms, TBLResources) => new
{
IDCustom = CTBLCustoms.IDCustom,
Descricao = CTBLCustoms.Descricao,
IDWOHD = CTBLCustoms.IDWOHD,
IDResource = CTBLCustoms.IDResource,
ResourceCode = TBLResources.Code
})).ToList();
gvwDados.DataSource = oConsulta;
}
}
Я добавил AsEnumerable()
, как было предложено, но мне пришлось добавить ToList()
в конце, чтобы я мог привязать его к DataGridView.