public static DatabaseName Parse(string name)
{
Contract.Requires(!string.IsNullOrWhiteSpace(name));
const string invalidDatabaseName = "Invalid database name";
var parts = name.Trim().Split(new[] { '.' });
Contract.Assert(parts.Length > 0);
if (parts.Length > 2)
{
throw new ArgumentException(invalidDatabaseName);
}
string schema = null;
string objectName;
if (parts.Length == 2)
{
schema = parts[0];
if (string.IsNullOrWhiteSpace(schema))
{
throw new ArgumentException(invalidDatabaseName);
}
objectName = parts[1];
}
else
{
objectName = parts[0];
}
if (string.IsNullOrWhiteSpace(objectName))
{
throw new ArgumentException(invalidDatabaseName);
}
return new DatabaseName(objectName, schema);
}