我尝试在使用.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适应所有这些:(
答案 0 :(得分:0)
回答你问题的第二部分。
您需要将“KeyAttribute”添加到“EmployeeId”属性的PrimaryKey属性中。 该属性位于“System.ComponentModel.DataAnnotations”命名空间中。
Sub Sonic 3没有,但您可以更改底层模板以生成此功能,或更改子声波引擎并将其作为补丁提交。
我正在使用SilverLight 3与RaiServices一起运行。
希望这有帮助。
答案 1 :(得分:0)
您是否可以尝试删除[EnableClientAccess()]属性以查看您的项目是否会构建?