我们计划从 EF4.2 升级到 6,但在 4.2 中工作的功能遇到问题。
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 分析器尝试在默认目录中实际创建一个 Model_XX_EMS_DCEMMS 表,并且从不执行 select 语句,因此返回 null。
这就是 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 配置或我缺少的某些属性?