internal Schema(Guid id, string name, params SchemaField[] fields)
{
if (string.IsNullOrWhiteSpace(name))
throw new InvalidOperationException("A Schema must have a valid, non-empty name");
if (fields == null || !fields.Any())
throw new InvalidOperationException("A Schema must include one or more fields");
if(id == default(Guid))
throw new InvalidOperationException("A Schema Id must be a valid (non-default) Guid");
Id = id;
Name = name;
Fields = fields.ToList();
}