両方の質問に対する答えは、息をのむほど簡単です。WCF データ サービスを指定して、IEnumerable<T>を返すメソッドを作成し、[WebGet] 属性を使用してサービスから公開します。
ここにステップバイステップがあります:
MyDBDataContext というデータコンテキストを公開する Entity Data Model または Linq To Sql モデルがあるとします。
WCF データ サービスのコードは次のようになります。
public class MyWCFDataService : DataService< MyDBDataContext >
{
// 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 class Person { public int PersonID { get; 設定; } パブリック文字列 FirstName { get; 設定; } パブリック文字列 LastName { get; 設定; } }
タイプを返すメソッドを WCF Data Service クラスに追加し、[WebGet] で装飾するだけです。
public class CustomerDataServ : DataService< Data.CustDataClassesDataContext > {
[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;
}
}