我正在使用EntityFramework Code First 5,我有我的数据模型。
示例:
[Table("Contract"]]
public class Contract
{
...
[ForeignKey("SomeKey")]
//[Include]
public virtual BusinessPartner BP
{
...
}
}
WPF客户端目前使用数据模型,效果很好。现在我正在编写Silverlight客户端并使用相同的模型。要访问数据库,我使用的是RIA服务。它在silverlight中工作得很好,直到我不得不添加一些像[Include]这样的RIA注释(在上面的例子中有注释)。
问题是我们在数据模型中使用.NET 4 Client Profile而我们无法更改它。但RIA注释位于System.ServiceModel.DomainServices.Server命名空间中,该命名空间需要.NET 4或.NET 4.5。
因此,如果我添加RIA [Include]注释,模型就不再编译了。
有没有办法在.NET 4 Client Profile中使用RIA注释属性,以便在WPF和Silverlight客户端中使用相同的数据模型?
我已经阅读过有关在XML文件中定义这些RIA属性的内容,但我找不到示例..
谢谢
答案 0 :(得分:1)
我找到了解决问题的方法。我使用了FluentMetadata,Fluent API用于WCF RIA服务,使我能够在不同的程序集中定义注释。这正是我所需要的。有关FluentMetadata的更多信息,请参阅以下link
答案 1 :(得分:0)
如果它适用于WPF并且在Silverlight中正常工作,那么你唯一需要的就是为你的WPF应用程序创建自己的虚拟属性,它将模仿来自RIA的IncludeAttribute来编译它。要实现这一点,您需要将属性放在RIA中的相同名称空间中。
namespace System.ServiceModel.DomainServices.Server
{
// Just put this into your WPF app :)
[AttributeUsageAttribute(AttributeTargets.Property|AttributeTargets.Field, AllowMultiple = true, Inherited = true)]
public class IncludeAttribute : Attribute {}
}