Почему System.Data.Services.MimeTypeAttribute теперь только атрибут уровня класса? - PullRequest
1 голос
/ 08 апреля 2010

Я начинаю с Astoria / ADO.NET Data Services / WCF Data Services. Просматривая множество примеров кода, кажется, что атрибут MimeType раньше был атрибутом уровня метода. После установки последнего обновления теперь оно является атрибутом уровня класса.

Если у меня есть более одной Сервисной операции, которую я хочу вернуть как определенный 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' недопустим в этом типе объявления. Он действителен только в объявлениях класса". когда я компилирую, потому что теперь я не могу этого сделать.


Теперь я должен сделать это:

[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 в свой класс.

Действительно ли все это задумано , или я что-то упустил?

1 Ответ

2 голосов
/ 09 апреля 2010

Спасибо, что сообщили нам об этой ошибке. Я открыл это с нашей стороны, чтобы отслеживать эту проблему

С недавним обновлением мы добавили поддержку больших двоичных объектов как первоклассную концепцию в службах данных. Если у вас есть связь BLOB-объектов с сущностью, то и у сервера, и у клиента есть способы решить эту проблему. Чтобы узнать больше об этом, пожалуйста, перейдите по следующей ссылке: http://msdn.microsoft.com/en-us/library/ee473426(v=VS.100).aspx

Надеюсь, это поможет.

Спасибо Pratik [MSFT]

...