Свойства навигации просты в EF. Пример ниже показывает, как будет выглядеть свойство навигации:
public class Foo
{
public int FooId { get; set; }
public string SomeProperty { get; set; }
public virtual IEnumerable<Bar> Bars { get; set; }
}
Где Foo
представляет таблицу A, а Bar
представляет таблицу B. Ключевым словом для свойства навигации является виртуальное, которое по умолчанию включает отложенную загрузку. Предполагается, что вы используете EF4.1 Code First.
EDIT
Вне моей головы, это должен быть хороший стартовый шаблон для вас:
public class PointOfInterestContext : DbContext
{
public IDbSet<PointOfInterest> PointOfInterest { get; set; }
public IDbSet<POITag> POITag { get; set; }
public IDbSet<Tag> Tag { get; set; }
public override OnModelCreating(DbModelBuilder modelBuilder)
{
// custom mappings go here
base.OnModelCreating(modelBuilder)
}
}
public class PointOfInterest
{
// properties
public int Id { get; set; }
public string Title { get; set; }
// etc...
// navigation properties
public virtual IEnumerable<POITag> POITags { get; set; }
}
public class POITag
{
// properties
public int Id { get; set;}
public int PointOfInterestId { get; set; }
public int TagId { get; set; }
// navigation properties
public virtual PointOfInterest PointOfInterest { get; set; }
public virtual Tag Tag { get; set; }
}
public class Tag
{
// properties
public int Id { get; set; }
public string TagName { get; set; }
// etc...
// navigation properties
public virtual IEnumerable<POITags> POITags { get; set; }
}
Тогда вы реализуете другую логику в своих бизнес-объектах. Предполагается, что объекты должны быть легковесными и в большинстве случаев должны иметь атрибуты данных. Я предпочитаю использовать текущие отображения через OnModelCreating.
Вот несколько хороших ссылок:
MSDN - сначала код EF 4.1
Code First Tutorial