Kod EF5 Najpierw: Wykryj, czy tworzy bazę danych, dzięki czemu mogę uruchamiać instrukcje ALTER

Jestem nowy w Entity Framework 5. Nasz zespół używaCode First przepływ pracy.

Zanim zacznę od mojego głównego pytania,pozwólcie, że najpierw pokażę wam, co próbowałem (ostateczny komentarz wszechczasów: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 to klasa, którą stworzyłem, która dziedziczy zCBDContext który zawiera metody nadpisywania, a także dziedziczy zDBContext. Jednym z napotkanych przeze mnie problemów jest to, że struktura encji nie obsługuje wyjątkowości pola. Przeczytałem już artykuł na ten tematKonfigurowanie / mapowanie właściwości i typów za pomocą Fluent API na ich stronie i nie mogę znaleźć żadnej konfiguracji, aby ustawić właściwość na unikalną.

Tak więc, aby ustawić unikatowe pole, ręcznie uruchomiłem kilka instrukcji SQL ALTER podczas tworzenia,

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 ...
    }
}

Moje pytania:

Czy mam rację, że ramy podmiotunie ma żadnych adnotacji dotyczących konfiguracji lub danych doustaw unikalne pole?Czy istnieje sposób wykrywania lub sprawdzania w czasie wykonywania, czy EF tworzy bazę danych, czy nie, więc mogę przenieść lub ukryć tę instrukcjęif (_context.Database.CreateIfNotExists()) gdzieś dostępnej metody, którą można zastąpić?

Naprawdę chcę usunąćif (_context.Database.CreateIfNotExists()) z użyciem statemnta i umieść go gdzieś indziej lub w środkuMyDBContext więc mój kod będzie wyglądał tak,

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

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

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion