Ответ на оба вопроса невероятно прост. Для данной службы данных WCF создайте метод, возвращающий ваш IEnumerable , и используйте атрибут [WebGet], чтобы открыть его из службы.
Вот шаг за шагом:
Предположим, что у кого-то есть модель данных сущностей или модель Linq To Sql, предоставляющая текстовый текст с именем MyDBDataContext.
Код для вашей службы данных WCF будет выглядеть следующим образом:
public class MyWCFDataService : DataService< MyDBDataContext >
{
<pre><code>// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
Предположим, у вас есть объект, которого нет в модели. В этом случае я буду использовать «Person» в качестве примера:
человек публичного класса
{
public int PersonID {get; задавать; }
публичная строка FirstName {get; задавать; }
открытая строка LastName {get; задавать; }
}
Просто добавьте метод к вашему классу службы данных WCF, который возвращает ваш тип, и украсьте его с помощью [WebGet]:
открытый класс CustomerDataServ: DataService
{
[WebGet]
public IEnumerable<Person> GetEntries() {
List<Person> entries = new List<Person>();
for (int i = 0; i < 30; i++) {
entries.Add(
new Person() { PersonID = i, FirstName = "First " + i, LastName = "Last " + i }
);
}
return entries.ToArray();
}
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
// TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
// Examples:
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}