我的问题:我想在我的Entity Framework实体(在我的ASP.NET项目中)添加一个简单的类型属性(例如string,int,double),该实体与任何字段都没有关联在与实体对应的数据库表中。我希望能够在我的ASP.NET项目中设置此属性的值,并将该属性的内容自动神奇地发送到Silverlight客户端,通过RIA Services获取实体。
我该怎么做?
注意:如果这样更容易,对于我的特定实例,我不需要将实体保存回数据库。此外,如果这对于视图和表格都有用,那将会很棒。
我的设置:我正在使用Silverlight 4,Entity Framework 4和RIA Services。它以正常方式设置:Silverlight客户端应用程序和ASP.NET服务器应用程序;我正在从数据库生成我的EF模型。 RIA服务正在Silverlight客户端上生成实体和数据库访问方法。
我的例子:
数据库:客户表
EF生成的实体(ASP.NET服务器端):客户类
我想将一个属性添加到与数据库无关的Customer实体:
在我的域服务(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 :(得分:3)
使用T4s为实体生成部分类(例如Visual Studio扩展库中的POCO T4),然后添加一个文件,例如: MyEntity.Part2.cs与生成的文件具有相同的分部类,但包含新属性。
有关详情,请参阅Google分部课程C#。