Кто-нибудь знает, почему EF6 будет излишне перебрасывать Int16 в smallint? Используя функцию ведения журнала, я вижу, что выполняется следующий запрос:Entity Framework 6.0.1 ненужно литье smallint
SELECT
[Project1].[LabelName] AS [LabelName], Project1.Usage, Project1.FacilityID
FROM (SELECT
[Extent1].[LabelName] AS [LabelName],
[Extent1].[Usage] AS [Usage],
extent1.facilityid
FROM [dbo].[Label] AS [Extent1]
WHERE (0 = [Extent1].[DeleteInd])
AND ([Extent1].[FacilityID] IN (cast(1 as smallint), cast(5 as smallint)))
AND (([Extent1].[LabelName] LIKE @p__linq__0 ESCAPE '~') OR ([Extent1].[LabelName] LIKE @p__linq__1 ESCAPE '~'))
) AS [Project1]
ORDER BY [Project1].[Usage] DESC
-- p__linq__0: '%test%' (Type = AnsiString, Size = 8000)
-- p__linq__1: 'test%' (Type = AnsiString, Size = 8000)
-- Executing at 12/6/2013 4:08:49 PM -08:00
-- Completed in 16 ms with result: SqlDataReader
Это запрос Linq:
Context.Database.Log = Console.Write;
var labels = (from label in Context.Labels
where label.DeleteInd == false &&
Settings.FacilitySearch.Contains(label.Facility.FacilityID) &&
(label.LabelName.Contains(searchText) || label.LabelName.StartsWith(searchText))
orderby label.Usage descending
select label.LabelName);
return labels.ToList();
EF знает FacilityId является SMALLINT < -> Int16 (будет показывать картинку, но не достаточное количество очков репутации: - /)
проекта: C WinForms # .NET 4.0 для Windows 7 SP1 Visual Studio 2010
Попробуйте использовать 'DataAnnotation' над свойством, например:' [Column (TypeName = "INT")] '(example) – Tico
Какой тип' Settings.FacilitySearch'? – StriplingWarrior
@Tico: зачем это нужно, когда отображение EF уже знает его INT16? Я использую первую разработку базы данных. – BSOD2600