Código EF5 First: Detectar se cria um banco de dados para que eu possa rodar as instruções ALTER

Eu sou novo no Entity Framework 5. Nossa equipe está usandoCode First fluxo de trabalho.

Antes de começar minha pergunta principal,deixe-me primeiro mostrar-lhe o que tentei (o último comentário de todos os tempos:D).

public class MyDBContext : CDBContext
{
    public MyDBContext() : base(connString) { }

    public MyDBContext(string connStr) : base(connStr) { }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        // removes some conventions
        modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
        // ........

        // model configurations which contains mappings
        modelBuilder.Configurations.Add(new AccountConfiguration());
        // ........

        // calls base OnModelCreating
        base.OnModelCreating(modelBuilder);
    }

    // list of all Entity
    public DbSet<Account> Account { get; set; }
}

MyDBContext é a classe que criei que herda deCBDContext que contém métodos de substituição e que também herda deDBContext. Um dos problemas que encontrei é que a estrutura de entidade não lida com a singularidade do campo. Eu já li o artigo sobreConfigurando / mapeando propriedades e tipos com a API do Fluent em seu site e não consigo encontrar nenhuma configuração para definir uma propriedade em exclusivo.

Então, o que eu fiz para definir o campo exclusivo é executar manualmente várias instruções SQL ALTER durante a criação,

using (MyDBContext _context = new MyDBContext(connString))
{
    if (_context.Database.CreateIfNotExists()) 
    {
        _context.Database.ExecuteSqlCommand("ALTER TABLE Account ADD CONSTRAINT UQ_Account_AccountNumber UNIQUE(AccountNumber)");
        _context.Database.ExecuteSqlCommand("ALTER TABLE Account ADD CONSTRAINT UQ_Account_GUID UNIQUE(GUID)");
        // .... more on this in the following lines ...
    }
}

Minhas perguntas:

Estou certo que a estrutura da entidadenão tem nenhuma anotação de configuração ou dados paradefinir o campo exclusivo?Existe uma maneira de detectar ou saber durante o tempo de execução se a EF criar um banco de dados ou não, para que eu possa mover ou ocultar essa instruçãoif (_context.Database.CreateIfNotExists()) em algum lugar para um método disponível que pode ser substituído?

O que eu realmente quero é removerif (_context.Database.CreateIfNotExists()) do statemnt usando e colocá-lo em outro lugar ou dentroMyDBContext então meu código ficará assim,

using (MyDBContext _context = new MyDBContext(connString))
{
    Account _acc = new Account()
    // ...Account properties ...

    _context.Account.Add(_acc);
    _context.SaveChanges();
}

Obrigado.

questionAnswers(2)

yourAnswerToTheQuestion