0

我正在用 VB.NET-Code First 开发一个数据库。我想在位置和邮政编码中添加纬度和经度。现在我正在为每个班级添加一个地理坐标。

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 表,其中包含两个外键(对于其他对象可能更多)。如果我使用 inhearaance 实现,我可以找到任何两个 IGeographicCoordinate 类之间的距离......

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

使用 inhearaance 实现会将两个实体绑定在两个 IGeographicCoordinates 的实现中。我也可以让这些类继承 GeographicCoordinate 类......

Public Class Location
    Inherits GeographicCoordinate
    Implements ILocation

我倾向于远离做这样的事情,因为我被锁定没有任何具有 lat 和 long 的类继承自其他任何东西。

谢谢。

4

1 回答 1

0

我喜欢你已经拥有它的方式。除非出于某种原因,您很难将这些实体读写到数据库中,否则不应该这样,我认为这会给您带来最大的灵活性。如您所说,如果您在邮政编码和位置上实现接口,则无法轻松提供与坐标相关的功能。如果你继承,你就会限制你从其他类继承的能力。那么,如果其他两个选项都有缺点,而您提出的想法没有,为什么不使用它呢?除非你能想到一些你没有提到的缺点?

于 2012-05-16T15:17:39.343 回答