オブジェクトの保存と取得に使用しようとしてEntity Framework
いますが、そのプロパティの 1 つは、制御できないクラスです。
この問題の説明のために、Arc
オブジェクトを永続化しようとしているとしましょう:
class Arc {
public Angle start { get; set; }
public Angle end { get; set; }
// ... other properties ...
}
しかし、ソースへの書き込みアクセス権がありません。Angle
ソースには、次のようなパブリック インターフェイスがあります。
class Angle {
public enum Unit { Radians, Degrees };
public Angle(double value, Unit units); // constructor
public float Radians() { get; } // returns angle value in radians
public float Degrees() { get; } // returns angle value in degrees
}
DbContext のOnModelCreating()
メソッドで角度フィールドをデータベースの float 列にマップすることができると思いますが、MSDN
ドキュメントを読んでも、これを達成するために何をする必要があるかわかりません。
オブジェクトを格納するときに角度の度 (またはラジアン) プロパティをAngle
読み取り、それらを取得するときにその値を使用して新しいを構築する必要があります。これどうやってするの?
編集:Angleプロパティをマップしないようにし、それぞれにマップされたプロパティを追加して変換を行うという貧弱な解決策を考えました。次のようなものです:
public float start_degrees { get { return start.Degrees; }
set { start = new Angle(value, Angle.Degrees); }
}
しかし、私のオブジェクトにはこの性質の多くのプロパティがあるため、これは避けたいと思います。つまり、さらに多くのプロパティを追加することになります。もっと簡単な解決策があることを願っています。