RIA DomainService + ActiveRecord

时间:2009-07-18 20:57:11

标签: activerecord subsonic3

我尝试在使用.NET RIA Services的SL3项目中使用SubSunsonic.ActiveRecord。 但是,当我尝试在DomainService类中返回一些IQuerable时,我得到一个错误,即由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来SQL:)

THX

P.S。刚试过SubSonic的LinqTemplates,但这个解决方案我得到了错误

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适应所有这些:(

2 个答案:

答案 0 :(得分:0)

回答你问题的第二部分。

您需要将“KeyAttribute”添加到“EmployeeId”属性的PrimaryKey属性中。 该属性位于“System.ComponentModel.DataAnnotations”命名空间中。

Sub Sonic 3没有,但您可以更改底层模板以生成此功能,或更改子声波引擎并将其作为补丁提交。

我正在使用SilverLight 3与RaiServices一起运行。

希望这有帮助。

答案 1 :(得分:0)

您是否可以尝试删除[EnableClientAccess()]属性以查看您的项目是否会构建?