Оказалось, проблема существует только с типом byte (sbyte — дает тот же результат)
вот пример:
class Program
{
class Program
{
static void Main(string[] args)
{
using (var conn = new SqlConnection(@"Data Source=.;Database=Test;Integrated Security=SSPI"))
{
conn.Open();
using (var db = new DbManager(conn))
{
var table = db.GetTable<TableTestRow>().
Where(row => row.Id == 1
&& row.ValueInt == 1
&& row.ValueShort == 1
&& row.ValueByte == 1
&& row.ValueEnum == StatusEnum.Status2
&& row.ValueBit);
table.ToList();
Console.WriteLine(table.ToString());
Console.ReadLine();
}
}
}
}
[TableName("TableTest")]
public class TableTestRow
{
public long Id;
public int ValueInt;
public short ValueShort;
public sbyte ValueByte;
public StatusEnum ValueEnum;
public bool ValueBit;
}
public enum StatusEnum : sbyte
{
Status1,
Status2,
Status3
}
CREATE TABLE [dbo].[TableTest](
[Id] [bigint] NOT NULL PRIMARY KEY CLUSTERED,
[ValueInt] [int] NOT NULL,
[ValueShort] [smallint] NOT NULL,
[ValueByte] [tinyint] NOT NULL,
[ValueEnum] [tinyint] NOT NULL,
[ValueBit] [bit] NOT NULL,
)
Дает следующее:
SELECT
[row1].[Id],
[row1].[ValueInt],
[row1].[ValueShort],
[row1].[ValueByte],
[row1].[ValueEnum],
[row1].[ValueBit]
FROM
[TableTest] [row1]
WHERE
[row1].[Id] = 1 AND
[row1].[ValueInt] = 1 AND
[row1].[ValueShort] = 1 AND
Convert(Int, [row1].[ValueByte]) = 1 AND
Convert(Int, [row1].[ValueEnum]) = 1 AND
[row1].[ValueBit] = 1
конвертируется только byte (sbyte так же)