我要揭露既简单实体,并通过一个单一的WCF服务任命为OData的。 由于艺术家的名单和他们的专辑的领域,我知道我可以有一个的DbContext像这样:
public class PickContext: DbContext {
public DbSet<Album> Albums { get; set; }
public DbSet<Artist> Artists { get; set; }
public DbSet<List> Lists { get; set; }
从这我可以让OData服务是这样的:
public class PickDataService : DataService<PickContext> {
public static void InitializeService(DataServiceConfiguration config) {
config.SetEntitySetAccessRule("Lists", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("Artists", EntitySetRights.AllRead);
config.SetEntitySetAccessRule("Albums", EntitySetRights.AllRead);
我也知道,我可以介绍一个类来压平列表,艺术家和专辑有所成加盟像这样:
public class PickContainer {
private PickContext pickContext=new PickContext();
public IQueryable<Foo> Foos { get; private set; }
public PickContainer() {
Foos=from a in pickContext.Albums
select new Foo {
ID=a.ID, Title=a.Title, Rating=a.Rating, Newness=a.Newness, Chance=a.Chance,
LastChosen=a.LastChosen, Acquired=a.Acquired, Media=a.Media, ArtistID=a.ArtistID,
ArtistName=a.Artist.Name, ListID=a.Artist.ListID };
}
}
然后我可以创建第二个服务来主持这个连接实体:
public class PickService : DataService<PickContainer> {
public static void InitializeService(DataServiceConfiguration config) {
config.SetEntitySetAccessRule("Foos", EntitySetRights.AllRead);
但我不能工作了是是否有办法有两套实体在一个容器中,更重要的是,在一个单一的服务 。 这可能吗? 我打得四处$扩大=艺术家,但如果我风与客户端上的扁平模式我的生活会更容易。 当我尝试包括FOOS在PickContext并将其添加到PickDataService,我得到一个异常“给定名称‘FOOS’在实体集没有被发现。”