我想通過單個WCF服務公開OData中的簡單實體和連接。由於藝術家的名單和他們的專輯的領域,我知道我可以有一個的DbContext像這樣: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);
但我不能工作了是是否有辦法有兩套實體在一個容器中,更重要的是,在單個服務。這可能嗎?我玩過$ expand = Artist,但是如果我在客戶端上展開平坦模型,我的生活將會變得更加輕鬆。當我嘗試在PickContext中包含Foos並將其添加到PickDataService時,我得到一個異常「實體集中找不到」給定名稱Foos「。」