2011-06-21 82 views
3

我的問題:我想添加一個簡單的類型屬性(例如string,int,double)到我的實體框架實體(在我的ASP.NET項目中),它與數據庫表中任何對應的字段沒有關聯到實體。我希望能夠在我的ASP.NET項目中設置此屬性的值,並將屬性的內容自動發送到Silverlight客戶端,並通過RIA Services獲取實體。如何將非數據庫屬性添加到實體框架實體?

我該怎麼做?

備註:如果這樣可以更容易,對於我的特定實例,我不需要將實體保存回數據庫。另外,如果這適用於視圖和表格,那就太好了。

我的設置:我使用的是Silverlight 4,Entity Framework 4和RIA Services。它以正常的方式進行設置:Silverlight客戶端應用程序和ASP.NET服務器應用程序;我正在從數據庫生成我的EF模型。 RIA服務正在Silverlight客戶端上生成實體和數據庫訪問方法。

我的例子:

數據庫:客戶表

  • 的CustomerID
  • 客戶名稱

EF生成的實體(ASP.NET服務器端):客戶類

  • 公共屬性CustomerID作爲整數
  • 公共財產作爲客戶名稱字符串

我想屬性添加到未與數據庫相關聯的客戶實體:

  • 公共財產UnicornColor as string

在我的域名服務(ASP.NET服務器端)中,我將自己填寫新屬性:

Public Function GetCustomers() As IQueryable(Of Customer) 
    Dim customers as IQueryable(of Customer) = Me.ObjectContext.Customers 
    For each c as Customer in customers 
     c.UnicornColor = "Green" 
    Next 
    return customers 
End Function 

在客戶端,我想這個新的屬性和它的價值在那裏,當我運行我的查詢:

Public Sub LoadCustomers() 
    myContext.Load(myContext.GetCustomersQuery, AddressOf CustomersLoaded, Nothing) 
End Sub 

Public Sub CustomersLoaded(ByVal loadOp as LoadOperation(Of Customer)) 
    Dim customers as IEnumerable(Of Customer) = loadOp.Entities 
    For Each c as Customer in customers 
     dim color as string = c.UnicornColor 
    Next 
End Sub 
+0

這是Code First還是什麼? – OpticalDelusion

+0

我正在從現有數據庫生成我的EF模型。 – sparks

+0

爲了更清楚地說明,我正在使用ADO.NET實體數據模型模板和實體數據模型嚮導來生成我的模型和實體,如下面的「顯示數據」部分所述:http://msdn.microsoft。com/en-us/library/ff713719%28v = VS.91%29.aspx我也按照演練中所述創建了我的域服務。 – sparks

回答

3

使用T4S產生的實體部分類(如Visual Studio擴展庫中的POCOs T4s),然後添加一個文件,例如MyEntity.Part2.cs與生成的文件具有相同的部分類,但包含新的屬性。

欲瞭解更多信息Google偏分類C#。

+0

此解決方案是否允許RIA Services在客戶端創建新屬性,並在查詢期間將這些屬性的值從服務器移動到客戶端? ---------- 我目前有EF從數據庫中生成我的實體。我試着向Customers和一個新的屬性(在ASP.NET服務器端項目中)添加一個部分類。但是,RIA Services不會爲我的客戶客戶實體創建財產。 – sparks

+0

您是否在新屬性上添加了DataMember屬性? –

+0

將DataMember屬性添加到新的屬性中。謝謝。 – sparks

相關問題