private DatasetVersion getDatasetWorkingCopy(Int64 datasetId)
{
DatasetVersion dsVersion = DatasetVersionRepo.Get(p =>
p.Dataset.Id == datasetId
&& p.Dataset.Status == DatasetStatus.CheckedOut
&& p.Status == DatasetVersionStatus.CheckedOut
)
.FirstOrDefault();
if (dsVersion != null)
{
dsVersion.Materialize();
return (dsVersion);
}
// else there is a problem, try to find and report it
Dataset dataset = DatasetRepo.Get(datasetId); // it would be nice to not fetch the dataset!
if (dataset.Status == DatasetStatus.Deleted)
throw new Exception(string.Format("Dataset {0} is deleted", datasetId));
if (dataset.Status == DatasetStatus.CheckedIn)
throw new Exception(string.Format("Dataset {0} is in checked in state", datasetId));
return null;
}