2011-08-08 42 views
0

我正在將WCF RIA Services與實體框架4.0結合使用。IncludeAttribute是否在ObjectQuery和DbSet包含方法上添加了任何值?

爲確保相關對象能夠安全地將其交給客戶端,我需要在我的DomainService中使用ObjectQuery(Of T).IncludeDbSet(Of TResult).Include方法首先將它們包含在內。我還需要將IncludeAttribute添加到元數據類中的導航屬性。

我做一個決定讓傳輸到客戶端相關的對象,我被迫做出變化來實現它,這似乎有點多餘。

我正在考慮對T4模板進行修改,以便所有導航屬性都自動使用IncludeAttribute進行修飾。

我有點擔心之前的請求遺留下來的實體被無意中發送給客戶端,但我的理解是DomainService是無狀態的,這應該意味着情況並非如此,對嗎?

了「的DomainService」名稱的一點是,它是stateless 對象,表示那是我 應用特性的特定領域。

Another approach我看到的是自動將Include屬性應用到項目中的任何元數據文件。我仍然需要創建元數據文件。

有沒有其他的危險,我沒有看到?有沒有更好的方法來達到同樣的效果?

回答

0

我修改了EDMX T4模板以自動應用IncludeAttribute並且它按預期工作。

手動應用我沿途標識的屬性的一個優點是您可以控制在客戶端上生成的代碼量。只能在服務器上使用的實體可以被排除。

這對我來說不是問題。

2

This thread幫助我理解背後的理由。希望能幫助到你。

+0

OP似乎有完全相同的問題。儘管如此,我覺得答案有點缺失。在無狀態的服務中,沒有延遲加載,該屬性添加了什麼值? –

+1

在EF案例中,它不會增加很多。雙重決定可能會限制存儲過程等數據,否則這些數據會返回比您希望從服務中公開的更多信息。 –

1

在這種情況下,我認爲你已經確定了潛在的問題空間。通過將IncludeAttributes設置爲默認值,您的服務將返回放在內存中的任何對象圖。

實現此解決方案的最佳方法是創建一個自定義的DomainServiceDescriptionProvider(here's a decent sample),它可以爲IncludeAttribute推導正確的屬性類型,而無需保持元數據文件的最新狀態。

+0

我無法找到上面提到的樣本。你能提供更多細節嗎? –

相關問題