我正在使用WCF RIA Services製作Silverlight 4應用程序。在客戶端暴露自定義服務器端實體框架屬性
在服務器端(*.Web
項目),我有一個從SQL Server數據庫自動生成的實體模型。 在客戶端,我有由Visual Studio生成的用於Silverlight程序集的域服務和代理對象。
我想爲模型添加自定義屬性(最好在服務器端)。 假設我有Contact
,Company
和Address
表,它們通過外鍵鏈接(但不一定是實際的外鍵約束條件)。我想添加一個屬性,該屬性將返回一個Contact
的Company
的Address
對象。
我一直試圖做一個部分類來擴展Contact
類,並添加一個CompanyAddress { get; }
屬性。但我不知道我需要用新的屬性來傳播到客戶端的自動生成的代碼。我需要添加哪些特定屬性?我是否需要在某個地方註冊它,以便代碼生成器知道它?
這是否必須是一個導航屬性,或者它可以更簡單?
這是甚至是做事情的最佳方式,還是我應該放棄擴展服務器端模型並在客戶端執行它? (如果我在客戶端執行此操作,我將面臨無法訪問個別Entity
派生類中的上下文對象的問題。)
我目前沒有修改現有數據庫模式的能力,所以我不能依賴已生成的.edmx文件中已存在的外鍵關係。我也不能手動修改.edmx文件,因爲將來可能更改模式*,並且在重新生成edmx文件時我的修改將被覆蓋。 – kpozin 2010-08-23 20:55:37
將setter添加到您的屬性並檢查生成的實體類是否標有DataContract屬性。如果是,請使用DataMember屬性標記您的屬性。 – 2010-08-23 21:10:34
感謝您的幫助。 我添加了一個setter,並用[DataMember]標記了屬性。這沒有影響;該屬性未添加到Generated_Code \\ *中的Contact代理類中。Web.g.cs – kpozin 2010-08-23 21:21:46