0

VB.NET-Code First でデータベースを開発しています。ロケーションと郵便番号の両方に緯度と経度を追加したいと考えています。現在、各クラスに GeographicCoordinate を追加しています。

Public Interface ILocation
    Property Street As String
    Property City As ICity
    Property State As IState
    Property Postal_Code As IPostalCode
    Property Country As ICountry
    Property Coordinate As IGeographicCoordinate

Public Interface IPostalCode
    Property ZIP As String
    Property Time_Zone As ITimeZone
    Property Coordinate As IGeographicCoordinate

Public Interface IGeographicCoordinate
    Property Latitude As Decimal
    Property Longitude As Decimal

私が持っている質問は、代わりに Location と Postal Code が GeographicCoordinate インターフェースを継承する方が良いかということです。現在の実装では、GeographicCoordinates テーブルに 2 つの外部キー (および他のオブジェクトの場合はさらに多い可能性があります) を持つことになると思います。inhearatance の実装を使用すると、任意の 2 つの IGeographicCoordinate クラス間の距離を見つけることができます...

Public Function Distance(byval LHS as IGeographicCoordinate, _
    byval RHS as IGeographicCoordinate)

inheratance 実装を使用すると、IGeographicCoordinates の 2 つの実装で両方のエンティティが結び付けられます。クラスに GeographicCoordinate クラスを継承させることもできます...

Public Class Location
    Inherits GeographicCoordinate
    Implements ILocation

私はそのようなことを避ける傾向があります。なぜなら、緯度と経度を持つクラスが他のものから継承されないことに縛られているからです。

ありがとう。

4

1 に答える 1

0

私はあなたがすでにそれを持っている方法が好きです。何らかの理由でそれらのエンティティをデータベースに読み書きするのが難しい場合を除いて、そうすべきではありませんが、それが最も柔軟性があると思います。あなたが言ったように、郵便番号と場所にインターフェースを実装する場合、座標関連の機能を簡単に提供することはできません。また、継承する場合は、他のクラスから継承する能力を制限します。したがって、他の2つのオプションの両方に欠点があり、提案されたアイデアに欠点がない場合は、それを使用してみませんか?あなたが言及しなかったいくつかの欠点を考えることができない限り?

于 2012-05-16T15:17:39.343 に答える