保存对象模式 - 1to1关系 - 实体框架

时间:2014-08-25 10:43:57

标签: c# asp.net-mvc entity-framework design-patterns

我使用EntityFramework处理ASP .Net MVC 5项目。我对这些框架很陌生。

我有两个以一对一的关系绑定的类:

头等舱:地址

 public class Address
{
    public int Id { get; set; }
    public string StreetAddress { get; set; }
    public string PostCode { get; set; }
    public string City { get; set; }
    public string Country { get; set; }

    public virtual Meeting Meeting { get; set; }

    public virtual double Latitude { get; set; }
    public virtual double Longitude { get; set; }


    /// <summary>
    /// Returns whole address as a string
    /// </summary>
    /// <returns></returns>
    public string ToString()
    {
        return StreetAddress + " " + PostCode + " " + City + ", " + Country;
    }

}

第二课:会议

public class Meeting
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Date { get; set; }
    public virtual Address Address { get; set; }
}

会议班负责这种关系,这意味着我编写了一个 MeetingService 类来处理简单的CRUD操作。这是界面:

public interface IMeetingService
{
    IEnumerable<Meeting> GetMeetings();
    IEnumerable<Meeting> GetMeetings(int sellerId);
    Meeting GetMeeting(int id);
    void CreateMeeting(Meeting Meeting);
    void EditMeeting(Meeting MeetingToEdit);
    void DeleteMeeting(int id);
    void SaveMeeting();
}

我的问题是我编写了一个反向地理编码功能,用于更新地址对象上的纬度和经度字段(使用Google MapsApi),我在调用该功能的地方有点迷失。

static void UpdateAdressCoordinates(ref Address address);

我的第一个赌注是在地址属性的设置器上添加某种触发器,并在每次修改其他字段时更新Lat / Lng但是感觉有点不对(不希望有任何类型的依赖关系)我的域对象,即使我抽象了GoogleMaps界面)

将反向地理编码逻辑放在MVC控制器中也感觉不对。无需解释。

我想我应该把逻辑放在服务层然后但是我对如何正确地做到这一点感到困惑,因为我只是用会议对象(不是“地址”)来处理。

谢谢!

0 个答案:

没有答案