我开始使用Astoria / ADO.NET数据服务/ WCF数据服务。查看那里的大量代码示例,看起来MimeType属性曾经是方法级别属性。安装the latest update后,它现在是类级属性。
如果我要将多个服务操作作为某个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);
}
我得到“属性'MimeType'在此声明类型上无效。它仅对'class'声明有效。”当我编译时,因为现在我不能这样做。
现在,我必须这样做:
[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,还是我错过了什么?
答案 0 :(得分:2)
感谢您向我们报告此错误。我已经在最后打开了这个问题来跟踪这个问题
通过最近的更新,我们在数据服务中添加了对blob的支持作为第一类概念。如果您与实体有blob关联,那么服务器和客户端都有办法解决这个问题。要了解有关此内容的更多信息,请参阅以下链接:http://msdn.microsoft.com/en-us/library/ee473426(v=VS.100).aspx
希望这有帮助。
由于 PRATIK [MSFT]