MVC WebAPI を使用して Silverlight アプリを起動しています。POCO オブジェクトは、MVC と Silverlight の間で共有されます。すべての POCO は .Net クラス ライブラリにあり、すべての POCO をリンクとして追加して Silverlight クラス ライブラリを作成し、コードを共有できるようにしました。残念ながら、Silverlight クラス ライブラリは EntityFramework.dll を参照できず、したがって [ForeignKey] などの属性をコンパイルできないため、データ注釈で問題が発生します。
私はすべての注釈を次のようにラップすることになりました:
#if !SILVERLIGHT
[ForeignKey("SecurityGroupID")]
#endif
public virtual SecurityGroup SecurityGroup { get; set; }
#if !SILVERLIGHT がすべての注釈をラップしないようにする方法を考え出した人はいますか? ([列]、[テーブル]、[ForeignKey] など)。
私が考えた解決策の 1 つは、子名前空間 (MyProject.FakeAttributes) に一致するコンストラクターを持つ空の属性を作成し、その名前空間を Silverlight バージョンにインポートすることです。そのソリューションに問題がある人はいますか?