У меня была похожая проблема со столбцом sql_variant
.
sql_variant
не поддерживается в LINQ to SQL / EF, поэтому для получения запроса, сгенерированного с помощью CAST(column as your_desired_type)
, требуется хитрость, в противном случае LINQ to SQL выдаст исключение Unable to cast object of type 'System.Int32' to type '%your desired type%'
.
Итак, сначала определите столбец в вашей модели с типом object
(вместо, например, string
)
[System.Data.Linq.Mapping.Table]
public class CompanyDimensionValue
{
// type "object" + private setter because Linq to SQL cannot map sql_variant
[System.Data.Linq.Mapping.Column]
public object Code { get; private set; }
}
и, во-вторых, добавьте System.Convert.ToString()
к запросу:
from v in table select
System.Convert.ToString(v.Code) // <- this generates a CAST(... as nvarchar...)