Проблема с дозвуковым соединением

Для тех из вас, кто разбирается в дозвуке!

        TblNewsCollection col =
            new Select().From(Tables.TblNews)
                .InnerJoin(Tables.TblContent)
                .Paged(currentPage, pageSize)
                .OrderDesc(TblContent.Columns.PubDate)
                .ExecuteAsCollection<TblNewsCollection>();

Вышеупомянутое работает, нет проблем, но когда я пытаюсь добавить предложение where

        TblNewsCollection col =
            new Select().From(Tables.TblNews)
                .InnerJoin(Tables.TblContent)
                .Where(TblContent.Columns.UserFK)
                .IsEqualTo(guidUserFK)
                .Paged(currentPage, pageSize)
                .OrderDesc(TblContent.Columns.PubDate)
                .ExecuteAsCollection<TblNewsCollection>();

Я получаю это сообщение

System.InvalidCastException: Object must implement IConvertible.
at System.Convert.ChangeType(Object value, Type conversionType, IFormatProvider provider)
at System.Data.SqlClient.SqlParameter.CoerceValue(Object value, MetaType destinationType) 
System.InvalidCastException: Failed to convert parameter value from a Guid to a String.

Я пробовал это из других полей, например битовое поле в базе данных, в котором говорится, что он не может преобразовать из bool в бит!

Кажется, проблема только в том, где утверждения после присоединения


person Tablet    schedule 18.11.2008    source источник


Ответы (2)


Я обнаружил, что объединения работают лучше при использовании TableColumnSchema, как в приведенном выше примере Northwind, в отличие от имени столбца.

person ptutt    schedule 16.01.2009

Northwind.CustomerCollection customersByCategory = new Select()
    .From(Northwind.Customer.Schema)
    .InnerJoin(Northwind.Order.Schema)
    .InnerJoin(Northwind.OrderDetail.OrderIDColumn, Northwind.Order.OrderIDColumn)
    .InnerJoin(Northwind.Product.ProductIDColumn, Northwind.OrderDetail.ProductIDColumn)
    .Where("CategoryID").IsEqualTo(5)
    .ExecuteAsCollection<Northwind.CustomerCollection>();

Есть пример, который предположительно работает. Если это кому-нибудь поможет, помогите мне!

person Tablet    schedule 18.11.2008