我開始使用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,還是我錯過了什麼?