Почему мои коллекции служб данных WCF не указаны в списке? - PullRequest
0 голосов
/ 01 августа 2011

Я пытаюсь создать простую службу данных WCF. Я могу успешно получить доступ к файлу scv, но моя коллекция Cars не отображается в списке. Содержание моего scv:

[DataServiceKey("VIN")]
public class Car
{
    public String VIN { get; set; }
    public String Make { get; set; }
    public String Model { get; set; }
    public int Year { get; set; }
}

public class CarService : DataService<Car>
{
    public IQueryable<Car> Cars
    {
        get
        {
            return (new List<Car> {
                new Car { VIN = "ABC123", Make = "Ford", Model = "F-250", Year = 2000 },
                new Car { VIN = "ABC124", Make = "BMW", Model = "Z-3", Year = 2005 },
                new Car { VIN = "ABC125", Make = "Audi", Model = "TT", Year = 2008 }
            }).AsQueryable();
        }
    }

    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}

При доступе к этой услуге в браузере я получаю:

<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<service xml:base="http://localhost:60730/CarService.svc/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
  <workspace>
    <atom:title>Default</atom:title>
  </workspace>
</service>

Смотри, что коллекция не попала в список. Что я делаю не так?

1 Ответ

4 голосов
/ 01 августа 2011

Попробуйте вместо этого:

[DataServiceKey("VIN")]
public class Car
{
    public String VIN { get; set; }
    public String Make { get; set; }
    public String Model { get; set; }
    public int Year { get; set; }
}

public class MyContainer
{
    public IQueryable<Car> Cars
    {
        get
        {
            return (new List<Car> {
                new Car { VIN = "ABC123", Make = "Ford", Model = "F-250", Year = 2000 },
                new Car { VIN = "ABC124", Make = "BMW", Model = "Z-3", Year = 2005 },
                new Car { VIN = "ABC125", Make = "Audi", Model = "TT", Year = 2008 }
            }).AsQueryable();
        }
    }
}

public class CarService : DataService<MyContainer>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
    }
}
...