public void AddDataView(Dataset dataset, DataView view)
{
Contract.Requires(dataset != null);
Contract.Requires(view != null && view.Id >= 0);
Contract.Requires(view.Dataset == null);
DatasetRepo.Reload(dataset);
DatasetRepo.LoadIfNot(dataset.Views);
int count = (from v in dataset.Views
where v.Id.Equals(view.Id)
select v
)
.Count();
if (count > 0)
throw new Exception(string.Format("There is a connection between dataset {0} and view {1}", dataset.Id, view.Id));
dataset.Views.Add(view);
view.Dataset = dataset;
view.DataStructures.Clear();
using (IUnitOfWork uow = this.GetUnitOfWork())
{
// save the relation controller object which is the 1 side in 1:N relationships. in this case: View
IRepository<DataView> repo = uow.GetRepository<DataView>();
repo.Put(view);
uow.Commit();
}
}