У меня есть два объекта с довольно стандартным отношением Many to Many, которое я создал в EF 5 Code First. Это Service и ServiceItem. Объект службы содержит набор ServiceItems, а ServiceItem содержит набор служб. Я могу создавать, изменять и сохранять данные в любой из основных свойств объектов без проблем. Когда я пытаюсь добавить ServiceItem к службе или службе в ServiceItem, она работает, но ничего не сохраняется. Я проверил, что созданы все соответствующие таблицы базы данных, включая таблицу ServiceItemService с перекрестными ключами. Таблица базы данных ServiceItemService не получает никакой записи, когда я добавляю элементы. Нет ошибки, и все остальное работает отлично.
Я немного озадачен и могу использовать некоторую помощь. Ниже приведены классы.
Класс службы;
public class Service
{
//Default constructor
public Service()
{
//Defaults
IsActive = true;
ServicePeriod = ServicePeriodType.Monthly;
ServicePeriodDays = 0;
ServiceItems = new Collection<ServiceItem>();
}
public int ServiceID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<ServiceItem> ServiceItems { get; set; }
public string TermsOfService { get; set; }
public ServicePeriodType ServicePeriod { get; set; }
public int ServicePeriodDays { get; set; }
public bool IsActive { get; set; }
}
Класс ServiceItem;
public class ServiceItem
{
public ServiceItem()
{
IsActive = true;
}
public int ServiceItemID { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public ICollection<Service> Services { get; set; }
public string UserRole { get; set; }
public bool IsActive { get; set; }
}
Это сопоставление Fluent, которое я сделал, пытаясь отладить эту проблему. Эта же проблема возникла до и после добавления этого сопоставления.
public DbSet<Service> Services { get; set; }
public DbSet<ServiceItem> ServiceItems { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Service>()
.HasMany(p => p.ServiceItems)
.WithMany(r => r.Services)
.Map(mc =>
{
mc.MapLeftKey("ServiceItemID");
mc.MapRightKey("ServiceID");
mc.ToTable("ServiceItemService");
});
}
Вот код, который я использую для сохранения элемента сервиса, который включает 2-3 ServiceItems в коллекции Service.ServiceItems. Я тщательно проверил, что ServiceItems находятся в соответствующей коллекции.
db.Entry(dbService).State = EntityState.Modified;
db.SaveChanges();
Объект dbService никак не влияет. Службы ServiceItems по-прежнему находятся в правильной коллекции, но обновление не производится в таблице базы данных ServiceItemService. Любые советы были бы очень желанными.
-Спасибо