[英]Exposing custom server-side Entity Framework properties on the client side
我正在使用WCF RIA服务制作Silverlight 4应用程序。
在服务器端( *.Web
项目),我有一个从SQL Server数据库自动生成的实体模型。 在客户端,我具有Visual Studio生成的域服务和代理对象,可在Silverlight程序集中使用。
我想向模型添加自定义属性(最好在服务器端)。 假设我有Contact
, Company
和Address
表,它们通过外键链接(但不一定是实际的外键约束 )。 我想添加一个属性,该属性将返回Contact
的Company
的Address
对象。
我一直在尝试通过创建局部类来扩展Contact
类,并添加CompanyAddress { get; }
CompanyAddress { get; }
属性。 但是我不知道我需要如何处理新属性才能使其传播到客户端上自动生成的代码。 我必须添加到属性中的特定属性吗? 我是否必须在某个地方注册它,以便代码生成器知道它?
这是否必须是Navigation属性,还是可以更简单一些?
而且这是否是做事的最佳方式,还是我应该放弃扩展服务器端模型,而只在客户端上做呢? (如果在客户端执行此操作,则会遇到无法访问各个Entity
派生类内部的上下文对象的问题。)
我从未使用过Silverlight或RIA服务,但我想它将非常相似。 当您创建EF模型并具有通过外键关联的实体(必须是关联关系)时,与其他实体关联的每个实体都将包含一个称为导航属性的东西。 因此,在您的方案中,联系人应包含名为Company的属性,而公司应包含称为Address的属性。 您可以通过使用ObjectSet上的Include或通过延迟加载来构造EF来加载那些导航属性(在WCF中不是个好主意)。 如果您通过WCF将“联系人”发送给客户,则“公司”和“地址”也将被发送。
您的方法存在一个大问题。 您的媒体资源仅包含getter-此类资源未序列化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.