У меня есть таблица (событие), которая может иметь 2 местоположения (основное, альтернативное). Локации могут использоваться в других таблицах (поэтому EventId в locationTable отсутствует). С помощью самоконтроля POCO, как создать ссылку из таблицы событий на таблицу Locations или как лучше всего справиться с этой ситуацией (я иметь полное замораживание мозга над этим)? (.NET 4.0 C #, EF4.1, MVC 3 используется).
Упрощенные классы:
public class Event
{
public int EventId {get; set;}
public string Tile {get; set;}
public int MainLocationId {get; set;}
public int AltLocationId {get; set;}
public virtual ICollection<Location> EventLocations {get; set;}
}
public class Location
{
public int LocationId {get; set;}
public string Name {get; set;}
}
Я думал о связующей таблице (EventLocations) с PK каждой таблицы и флагом, указывающим, является ли это основным или альтернативным местоположением, но я не уверен, как это будет выглядеть в настройке класса POCO. Возможно, это так, но для этого требуется дополнительная бизнес-логика (и в конечном итоге я хотел бы иметь возможность включить этот король решения в T4, чтобы мне не приходилось добавлять бизнес-логику в будущих проектах):
public class Event
{
public int EventId {get; set;}
public string Tile {get; set;}
public virtual ICollection<EventLocation> EventLocations {get; set;}
}
public class Location
{
public int LocationId {get; set;}
public string Name {get; set;}
public virtual ICollection<EventLocation> EventLocations {get; set;}
}
public class EventLocation
{
public int EventId {get;set;}
public int LocationId {get;set;}
public bool IsMain {get; set;}
public virtual Event Event {get;set;}
public virtual Location Location {get;set;}
}
Спасибо за любые советы / советы / решения / конструктивную критику!