Пока в Visual Studio нет конструктора, поддерживающего связь многие-ко-многим, хотя в Light Switch и есть эта опция (при настройке связей между источниками данных) - она все равно не работает, так и пишет - мол не поддерживается
Зато есть Code First - возможность сначала писать код, и не задумываться о создании/обновлении структуры базы данных.
Более подробно о Code First можете почитать, к примеру, на хабре
Итак, для создания связи многие ко многим в каждый класс, описывающий сущности, связанные логически множественной связью между собой добавляем свойство на связанные сущности реализующее интерфейс ICollection<ТипКлассаСвязанныхСущностей>
В конструкторе класса инициализируем свойство генерик-классом HashSet по типу связанных элементов.
Собственно можно пользоваться, промежуточная таблица, через которую собственно и идет связь многие-ко-многим, создается автоматически (рисунок ниже), так что об этом задумываться не приходится - описываем модели, используем и в БД не лазаем, как минимум в мелких проектах.
Зато есть Code First - возможность сначала писать код, и не задумываться о создании/обновлении структуры базы данных.
Более подробно о Code First можете почитать, к примеру, на хабре
Итак, для создания связи многие ко многим в каждый класс, описывающий сущности, связанные логически множественной связью между собой добавляем свойство на связанные сущности реализующее интерфейс ICollection<ТипКлассаСвязанныхСущностей>
В конструкторе класса инициализируем свойство генерик-классом HashSet по типу связанных элементов.
Собственно можно пользоваться, промежуточная таблица, через которую собственно и идет связь многие-ко-многим, создается автоматически (рисунок ниже), так что об этом задумываться не приходится - описываем модели, используем и в БД не лазаем, как минимум в мелких проектах.
public class Emp
{
public Emp()
{
Projects = new HashSet();
}
public int EmpId { get; set; }
public string EmpName { get; set; }
public ICollection Projects { get; set; }
}
public class Project
{
public Project()
{
Emps = new HashSet();
}
public int ProjectId { get; set; }
public string ProjectName { get; set; }
public ICollection Emps { get; set; }
}
public class EmpContext : DbContext
{
public DbSet Emps { get; set; }
public DbSet Projects { get; set; }
}
class Program
{
static void Main(string[] args)
{
var p1 = new Project() { ProjectName = "Fun Boat" };
var p2 = new Project() { ProjectName = "Jumbo Jet" };
var p3 = new Project() { ProjectName = "Free Zoo" };
var e1 = new Emp() { EmpName = "Wriju" };
var e2 = new Emp() { EmpName = "Wrishika" };
var e3 = new Emp() { EmpName = "Saswati" };
p1.Emps.Add(e1);
p1.Emps.Add(e2);
p2.Emps.Add(e2);
p2.Emps.Add(e3);
p3.Emps.Add(e3);
p3.Emps.Add(e1);
using (var ctx = new EmpContext())
{
ctx.Projects.Add(p1);
ctx.Projects.Add(p2);
ctx.Projects.Add(p3);
ctx.SaveChanges();
}
}
}
Код взят отсюда
Комментариев нет:
Отправить комментарий
Можете оставить свой комментарий