Мы планируем обновить с EF4.2 до 6 и испытываем проблемы с функциональностью, которая работала в 4.2.Выполнение OPENQUERY Синтаксис с DbContext.Database.SqlQuery <T> в Entity Framework 6.0
SELECT emp_no_alpha as EmployeeNumber, code_user_1 as Code1, emp_name as EmployeeName FROM OPENQUERY(EMS02, 'select emp_no_alpha, code_user_1, emp_name from dce_mms where emp_no_alpha ='' 100393'' ')
Мы используем приведенное выше утверждение в сочетании с dbContext.Database.SqlQuery ($ SQL-STMT) для извлечения объектов. Это отлично работает против этой модели в 4.2:
public abstract class Model_XX_EMS_DCEMMS
{
//LEN=9, RIGHT PAD
[Column("EMP_NO_ALPHA", Order = 0), Key(), DatabaseGenerated(DatabaseGeneratedOption.None)]
public string EmployeeNumber { get; set; }
//LEN=5, RIGHT PAD
[Column("CODE_USER_1")]
public string Code1 { get; set; }
[Column("EMP_NAME")]
public string EmployeeName { get; set; }
}
Однако в 6.0, SQL Profiler не пытается на самом деле создать таблицу Model_XX_EMS_DCEMMS внутри каталога по умолчанию и никогда не выполняет оператор выбора, поэтому возвращение нуля.
Это то, что происходит в 6.0:
SELECT Count(*)
FROM INFORMATION_SCHEMA.TABLES AS t
WHERE t.TABLE_TYPE = 'BASE TABLE'
AND (t.TABLE_SCHEMA + '.' + t.TABLE_NAME IN ('dbo.Model_XX_EMS_DCEMMS')
OR t.TABLE_NAME = 'EdmMetadata')
CREATE TABLE [dbo].[Model_XX_EMS_DCEMMS] (
[EMP_NO_ALPHA] [nvarchar](128) NOT NULL,
[CODE_USER_1] [nvarchar](max),
[EMP_NAME] [nvarchar](max),
[Discriminator] [nvarchar](128) NOT NULL,
CONSTRAINT [PK_dbo.Model_XX_EMS_DCEMMS] PRIMARY KEY ([EMP_NO_ALPHA])
)
Есть ли новая конфигурация DbContext или некоторые атрибуты, которые я пропавшими без вести?
Благодарим вас за разъяснение. Как было предложено в перекрестке MSDN, я удалил DbSet <> из моего DbContext, и теперь все работает. Мне бы хотелось увидеть поддержку OPENQUERY в EF. – fixitchris