2010-10-03 80 views
3

我想類似我的域名服務在我的方法:DomainService可以返回一個自定義類型嗎?

public SystemState GetSystemStatus() 
{ 
    return new SystemStatus 
    { 
     InterestingStatusValue1 = 1223, 
     OtherInterstingStatusValue = "abc", 
    } 
} 

這是行不通的。 Silverlight客戶端應用程序不會自動生成任何內容。 Howerver如果我使這是一個IQueryable方法,那麼我得到的東西在客戶端上生成。我將在上下文對象上獲得一個SystemStates屬性和一個Query方法。

有沒有辦法讓這個簡單的WCF調用?我想我可以在我的RIA網站上啓用WCF Silverlight Enabled服務,然後設置服務參考(這是不對的?)(爲什麼我無法在Silverlight應用程序中看到服務參考?)

初看起來,RIA服務似乎強制實施以數據爲中心/易於使用的CRUD,這對於表編輯者來說是非常好的,但對於那些在數據網格上拖動並完成後的LOB應用程序來說,並不那麼重要。

回答

2

您可以使用屬性(假設SystemState是你的實體)只返回一個實體:

例:

[Query(IsComposable = false)] 
public SystemState GetSystemStatus() 
{ 
    return new SystemStatus 
    { 
     InterestingStatusValue1 = 1223, 
     OtherInterstingStatusValue = "abc", 
    } 
} 

請記住,這仍然是一個查詢和RIA Services將生成的方法您DomainContext這樣的:

EntityQuery<SystemState> GetSystemStatusQuery() 

使用它像一個正常的EntityQuery,但請記住,你不能再執行查詢操作(排序或篩選)轉身的物體。

如果要在服務器上執行操作,請嘗試使用[Invoke]屬性。例如:

[Invoke] 
public SystemState GetSystemStatus() 
{ 
    return new SystemStatus 
    { 
     InterestingStatusValue1 = 1223, 
     OtherInterstingStatusValue = "abc", 
    } 
} 

我不知道你的返回類型的複雜程度,但我想,如果它可以被序列化,它會工作(不知道)。

+0

編輯:在這裏查看有關DomainService的更多詳細信息:http://msdn.microsoft.com/en-us/library/ee707373(VS.91).aspx – andrecarlucci 2010-10-04 14:28:22

相關問題