RIA DomainService + ActiveRecord

Я попытался использовать SubSunsonic.ActiveRecord в проекте SL3, который использует .NET RIA Services. Однако, когда я пытаюсь вернуть некоторый IQuerable в классе DomainService, я получаю сообщение об ошибке, что классы, сгенерированные Subsonic, имеют свойство Columns с неподдерживаемым типом. Вот что у меня есть

public IEnumerable<SE_NorthWind.SuperEmployee> GetIntegers()
{
  return SE_NorthWind.SuperEmployee.All()
    .Where(emp => emp.Issues > 100)
    .OrderBy(emp => emp.EmployeeID);
}

И это ошибка, которую я получаю

Error   7   Entity 'SE_NorthWind.SuperEmployee' has a property 'Columns' with an unsupported type.  SuperEmployee

Есть идеи, что делать? Не хочу использовать Linq to SQL :)

Спасибо

P.S. Просто пытался LinqTemplates от SubSonic, но в этом решении я получаю сообщение об ошибке

Error   4   The entity 'SE_NorthWind.SuperEmployee' does not have a key defined. Entities exposed by DomainService operations must have must have at least one property marked with the KeyAttribute.   SuperEmployee

конечно, таблица SuperEmployee имеет первичный ключ, потому что классы, сгенерированные SubSonic, могут его видеть

...
Columns.Add(new DatabaseColumn("EmployeeID", this)
            {
                IsPrimaryKey = true,
                DataType = DbType.Int32,
                IsNullable = false,
                AutoIncrement = true,
                IsForeignKey = false,
                MaxLength = 0
            });
...

Но для объектов RIA нужны некоторые атрибуты. Думаю, мне придется использовать собственный Linq To SQL, пока SubSonic не адаптируется ко всему этому :(


person Community    schedule 18.07.2009    source источник


Ответы (2)


Чтобы ответить на вторую часть вашего вопроса.

Вам необходимо добавить «KeyAttribute» к свойству PrimaryKey в свойстве «EmployeeId». Атрибут находится в пространстве имен «System.ComponentModel.DataAnnotations».

Нет в Sub Sonic 3, но вы можете изменить базовый шаблон, чтобы сгенерировать его, или изменить дозвуковой движок и отправить его как патч.

Я использую SilverLight 3 с RaiServices.

Надеюсь это поможет.

person Binary Worrier    schedule 04.08.2009

Можете ли вы попробовать удалить атрибут [EnableClientAccess ()], чтобы посмотреть, будет ли ваш проект собран?

person jdiaz    schedule 21.08.2009