C# 保存对象模式-1到1关系-实体框架

C# 保存对象模式-1到1关系-实体框架,c#,asp.net-mvc,entity-framework,design-patterns,C#,Asp.net Mvc,Entity Framework,Design Patterns,我在使用EntityFramework的ASP.NETMVC5项目中工作。我对这些框架非常陌生 我有两个一对一关系的类: 第一类:地址 Meeting类负责这种关系,这意味着我已经编写了一个MeetingService类来处理简单的CRUD操作。以下是界面: public interface IMeetingService { IEnumerable<Meeting> GetMeetings(); IEnumerable<Meeting> GetMeeti

我在使用EntityFramework的ASP.NETMVC5项目中工作。我对这些框架非常陌生

我有两个一对一关系的类:

第一类:地址

Meeting类负责这种关系,这意味着我已经编写了一个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();
}
我的第一个赌注是在地址属性的设置器上添加某种触发器,并在每次修改其他字段时更新Lat/Lng,但感觉有点不对,我不想对我的域对象有任何依赖,即使我抽象了GoogleMaps接口

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

我想我应该把逻辑放在服务层,但我不知道如何正确地做到这一点,因为我只考虑会议对象而不是地址


谢谢

在编辑/创建级别,将消息发布到。编写总线,作为一个独立的应用程序,根据发布的消息更新地址坐标。(可选)处理属性以检查坐标和地址是否同步。
public class Meeting
{
    public int Id { get; set; }
    public string Name { get; set; }
    public DateTime Date { get; set; }
    public virtual Address Address { get; set; }
}
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();
}
static void UpdateAdressCoordinates(ref Address address);