Мое приложение работает как на SQL Server, так и на Mysql, переключая конфигурацию в Web.config
.EF6 для MySql генерирует нежелательные `[]` escape-символы
Я только что добавил новый объект и играл с ним в SQL Server. Ладно, ладно, давай переключимся.
Все простые инструкции получения работают нормально, поэтому я могу перемещаться по страницам. Тем не менее, когда я ударил определенный Lambda запрос я получаю неожиданный и нежелательный ошибку
using (auitool2014Entities dataContext = GetDataContext())
{
return dataContext.sezione_a.Any(a =>
a.utente == utenteId &&
startDateString.CompareTo(a.A21) <= 0 &&
endDateString.CompareTo(a.A21) >= 0
);
}
В принципе мне нужно проверить, если существует хотя бы один ряд с Gien ограничениями (и да, эти поля даты сохраняются как строки yyyyMMdd
, поэтому я сравню их).
Ошибка, которую я получаю, состоит в том, что EF6 создает квадратные скобки, чтобы избежать имен таблиц. Weird. Странное, потому что, когда я попал в коллекцию сущностей с точки останова, я получаю следующее
{SELECT
`Extent1`.`A01`,
`Extent1`.`A01a`,
`Extent1`.`A01b`,
`Extent1`.`A02`,
`Extent1`.`A03`,
`Extent1`.`A11`,
`Extent1`.`A12`,
`Extent1`.`A12a`,
`Extent1`.`A12b`,
`Extent1`.`A12c`,
`Extent1`.`A21`,
`Extent1`.`A22`,
`Extent1`.`A23`,
`Extent1`.`A24`,
`Extent1`.`A25`,
`Extent1`.`A31`,
`Extent1`.`A31a`,
`Extent1`.`A31b`,
`Extent1`.`A32`,
`Extent1`.`A33`,
`Extent1`.`A33a`,
`Extent1`.`A33b`,
`Extent1`.`A33c`,
`Extent1`.`A34`,
`Extent1`.`A41`,
`Extent1`.`A42`,
`Extent1`.`A43`,
`Extent1`.`A51`,
`Extent1`.`A52`,
`Extent1`.`A53`,
`Extent1`.`A54`,
`Extent1`.`A54a`,
`Extent1`.`A54b`,
`Extent1`.`A54c`,
`Extent1`.`B11`,
`Extent1`.`B12`,
`Extent1`.`B13`,
`Extent1`.`B14`,
`Extent1`.`B15`,
`Extent1`.`Z0`,
`Extent1`.`prog`,
`Extent1`.`utente`
FROM (SELECT
[sezione_a].[A01] AS [A01],
[sezione_a].[A01a] AS [A01a],
[sezione_a].[A01b] AS [A01b],
[sezione_a].[A02] AS [A02],
[sezione_a].[A03] AS [A03],
[sezione_a].[A11] AS [A11],
[sezione_a].[A12] AS [A12],
[sezione_a].[A12a] AS [A12a],
[sezione_a].[A12b] AS [A12b],
[sezione_a].[A12c] AS [A12c],
[sezione_a].[A21] AS [A21],
[sezione_a].[A22] AS [A22],
[sezione_a].[A23] AS [A23],
[sezione_a].[A24] AS [A24],
[sezione_a].[A25] AS [A25],
[sezione_a].[A31] AS [A31],
[sezione_a].[A31a] AS [A31a],
[sezione_a].[A31b] AS [A31b],
[sezione_a].[A32] AS [A32],
[sezione_a].[A33] AS [A33],
[sezione_a].[A33a] AS [A33a],
[sezione_a].[A33b] AS [A33b],
[sezione_a].[A33c] AS [A33c],
[sezione_a].[A34] AS [A34],
[sezione_a].[A41] AS [A41],
[sezione_a].[A42] AS [A42],
[sezione_a].[A43] AS [A43],
[sezione_a].[A51] AS [A51],
[sezione_a].[A52] AS [A52],
[sezione_a].[A53] AS [A53],
[sezione_a].[A54] AS [A54],
[sezione_a].[A54a] AS [A54a],
[sezione_a].[A54b] AS [A54b],
[sezione_a].[A54c] AS [A54c],
[sezione_a].[B11] AS [B11],
[sezione_a].[B12] AS [B12],
[sezione_a].[B13] AS [B13],
[sezione_a].[B14] AS [B14],
[sezione_a].[B15] AS [B15],
[sezione_a].[Z0] AS [Z0],
[sezione_a].[prog] AS [prog],
[sezione_a].[utente] AS [utente]
FROM [dbo].[sezione_a] AS [sezione_a]) AS `Extent1`}
Первая часть является достаточно правильно, но второй идентификатор странно, полученный от SQL Server !!!
Следующая моя конфигурация:
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>
Как я могу исправить мою проблему?