我正在使用MVC WebAPI为Silverlight应用程序提供支持。 POCO对象在MVC和Silverlight之间共享。所有POCO都在.Net类库中,我创建了一个Silverlight类库,其中所有POCO都添加为链接,因此我可以共享代码。不幸的是,这会导致数据注释出现问题,因为Silverlight类库无法引用EntityFramework.dll,因此无法编译[ForeignKey]等属性。
我最终将所有注释都包括在内:
#if !SILVERLIGHT
[ForeignKey("SecurityGroupID")]
#endif
public virtual SecurityGroup SecurityGroup { get; set; }
有没有人想出办法让#if!SILVERLIGHT包装所有注释? ([Column],[Table],[ForeignKey]等?)。
我考虑过的一个可能的解决方案是在子命名空间(MyProject.FakeAttributes)中创建具有匹配构造函数的空白属性,并在Silverlight版本中导入该命名空间。有没有人看到该解决方案有任何问题?
答案 0 :(得分:1)
我必须建议不要在Silverlight中使用您的实体。实体通常不能与WCF一起使用,因为延迟加载和对象图中的循环之类的东西。帮自己一个忙,做个dtos。
如果你不打算使用dtos。在制作虚假属性之前,我会使用#ifs
。