public void RemoveSource(ReportSource source)
{
if (Sources.Count == 1) throw new Exception("The report must contain at least a Data Source");
foreach (var model in Models.Where(i => i.SourceGUID == source.GUID))
{
if (model.Elements.Count > 0 || !string.IsNullOrEmpty(model.RestrictionText)) throw new Exception(string.Format("The source '{0}' is already used by a model.", source.Name));
model.SourceGUID = Sources.First(i => i.GUID != source.GUID).GUID;
}
Sources.Remove(source);
}