我开始使用Astoria/ADO.NET数据服务/ WCF数据服务。仔细查看大量代码示例,看起来MimeType属性曾经是方法级别属性。安装the latest update后,它现在是一个类级属性。为什么System.Data.Services.MimeTypeAttribute现在只有一个类级属性?
如果我有多个服务操作要作为某个MimeType返回,那么现在看来我必须为每个操作创建一个新的服务。它是否正确?
大多数的例子是这样的:
[WebGet]
[SingleResult]
[MimeType("application/pdf")]
public IQueryable<byte[]> FooPDF()
{
var result = from p in this.CurrentDataSource.MyPDFs
where p.FooID == 2
select p;
return result.Take(1).Select(p => p.PDF);
}
我得到“属性‘Mime类型’不在此声明类型有效的,所以只能在‘类’的声明有效。”当我编译时,因为现在我不能这样做。
现在,我必须这样做:
[MimeType("FooPDF", "application/pdf")]
public class FooService : DataService<FooDBEntities>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetServiceOperationAccessRule("FooPDF", ServiceOperationRights.All);
}
[WebGet]
[SingleResult]
public IQueryable<byte[]> FooPDF()
{
var result = from p in this.CurrentDataSource.MyPDFs
where p.FooID == 2
select p;
return result.Take(1).Select(p => p.PDF);
}
}
更糟糕的是,我不能添加重复的MimeType属性上我的课。
这一切都是真的by design,还是我错过了什么?