2011-08-26 88 views
3

背景信息WCF RIA服務和Windows Azure的=>實體沒有定義

與Windows Azure和WCF RIA服務發展的關鍵,我已經看到了很多隨機誤差和總體令人沮喪的情況,但是這一個是真正的巔峯之作。我有一個具有以下架構的應用程序:2個Web角色(MVC3和ASP.NET與Silverlight RIA)=>業務層=>數據層(外部服務/表存儲/ SQL Azure)。 ASP.NET服務(配置文件/角色/會話)存儲在表存儲中。

由於最近的需求變化,需要添加一個移動網站。我想分享兩個GUI項目的(服務器端)ViewModels。爲了說明:

enter image description here

我的問題

我現在得到了可怕的「未找到」的異常時,我的項目在Windows Azure環境中託管。隨着小提琴手我發現它返回了以下異常:

實體中的DomainService「XXService」 XXModel'不 有定義的鍵。由DomainService操作 公開的實體類型必須至少有一個用KeyAttribute標記的公共屬性。

奇怪的是,這個東西在當地的Azure開發環境中完美運行,但沒有上傳到雲中。我認爲這個錯誤與現在與RIA服務不同的組件中的ViewModel有關,但爲什麼它會在本地而不是遠程工作?

如果有人需要任何補充信息,我會很樂意回答你的問題。

+1

你仍然正確地部署所有的碎片? RIA,Azure SDK和你的程序集都需要它。 –

+0

是的,所有的組件都正在部署,它已經在同一個項目上工作過。 – Bas

+1

您是否在開發環境中的乾淨目錄中重新構建了項目?我想知道是否你有一些以前的版本可以掩蓋問題。這不會解決您的問題,但它可以解釋開發與部署之間的差異。 –

回答

1

我已經解決了這個問題。看來只有在Windows Azure中託管時,RIA Services似乎無法從屬於另一個程序集中定義的模型類的屬性中取得屬性,而不是由承載這些服務的類組成。

0

您的實體是否有一個標有[Key]屬性的屬性?例如:

public class WidgetDef 
{ 
    [Key] 
    public int WidgetId { get; set; } 

    public string Title { get; set; } 
} 

這對RIA DomainServices使用的類型是必需的 - 正如您的問題中的錯誤消息中所述。

雖然我不知道它爲什麼會在開發環境中工作,而不是在真實環境中工作。

+0

是的,它現在幾個月沒有問題了。它與發佈到雲的組合以及將實體移動到不同的項目有關。 – Bas

+0

然後,我認爲我不能幫助你。但是感謝發佈這個問題,因爲我們正在考慮將來將Azure的Azure/RIAServices項目移植到Azure。 – GarethOwen

+2

然後準備一個shitstorm:D – Bas