У меня есть EntityObject с именем Pathway, который напрямую связан с данными в таблице pathway. Моя база данных также хранит правила для настройки Pathway. То, что я хотел бы сделать, это создать объект Pathway в моем коде, который является результатом Pathway + PathwayCustomisations. Получившийся результат никогда не должен возвращаться в базу данных, это просто временная проекция, используемая в коде.
public static Pathway ApplyCustomisation(Pathway p, ICollection<PathwayCustomisation> c)
{
Pathway resultant = new Pathway();
if (!p.PathwayModule.IsLoaded) p.PathwayModule.Load();
foreach (PathwayModule m in p.PathwayModule)
{
resultant.PathwayModule.Add(m);
}
foreach (PathwayCustomisation i in c)
{
switch (i.Command)
{
case "ADD":
resultant.PathwayModule.Add(i.PathwayModule);
break;
case "DELETE":
resultant.PathwayModule.Remove(i.PathwayModule);
break;
}
}
return resultant;
}
Этот метод подавляет первое препятствие, потому что я добавляю сущности PathwayModule во второй Pathway, когда они могут принадлежать только одному в модели / базе данных:
CoursePlanner.Test.PathwayTest.ApplyCustomisation:
System.InvalidOperationException : Collection was modified; enumeration operation may not execute.
Есть ли способ легко работать с проекциями Entity? Правильно ли я подхожу к проблеме?
Edit:
Я все еще получаю исключение, когда используется только первая часть метода:
public static Pathway ApplyCustomisation(Pathway p, ICollection<PathwayCustomisation> c)
{
Pathway resultant = new Pathway();
if (!p.PathwayModule.IsLoaded) p.PathwayModule.Load();
foreach (PathwayModule m in p.PathwayModule)
{
resultant.PathwayModule.Add(m);
}
return resultant;
}
Приведенное выше перечисление не изменяет ту же коллекцию, которая перечисляется, а просто добавляет элементы во вторую коллекцию. Этот код дает то же исключение.
.NET3.5, C #, VS Express 2008
Спасибо
Daniel