有没有办法在Silverlight中编译实体框架数据注释?

时间:2012-08-16 17:01:31

标签: c# silverlight entity-framework entity-framework-4

我正在使用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版本中导入该命名空间。有没有人看到该解决方案有任何问题?

1 个答案:

答案 0 :(得分:1)

我必须建议不要在Silverlight中使用您的实体。实体通常不能与WCF一起使用,因为延迟加载和对象图中的循环之类的东西。帮自己一个忙,做个dtos。

如果你不打算使用dtos。在制作虚假属性之前,我会使用#ifs