EF5 Code First: определите, создает ли он базу данных, чтобы я мог выполнять операторы ALTER

Я новичок в Entity Framework 5. Наша команда используетCode First рабочий процесс.

До того как я'начну с моего основного вопроса,позвольте мне сначала показать вам, что я пытался (окончательный комментарий всех времен).: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();
        // ........

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

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

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

MyDBContext это класс, который я создал, который наследует отCBDContext который содержит методы переопределения и который также наследует отDBContext, Одна из проблем, с которыми я столкнулся, заключается в том, чтоt обрабатывать уникальность поля. Я уже прочитал статью наНастройка / сопоставление свойств и типов с помощью Fluent API на их сайте, и я могунайти любую конфигурацию для установки свойства в уникальное.

Итак, что я сделал для того, чтобы установить уникальное поле, - это вручную запустить несколько операторов ALTER sql во время создания,

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

Мои вопросы:

Я прав, что структура сущностидон»не иметь никакой конфигурации или аннотации данных вустановить поле уникальным?Есть ли способ обнаружить или узнать во время выполнения, если EF создает базу данных или нет, чтобы я мог переместить или скрыть это утверждениеif (_context.Database.CreateIfNotExists()) где-нибудь доступный метод, который можно переопределить?

Что я действительно хочу, чтобы удалитьif (_context.Database.CreateIfNotExists()) от использования Statemnt и положить его в другом месте или внутриMyDBContext так что мой код будет выглядеть так,

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

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

Благодарю.

Ответы на вопрос(2)

Ваш ответ на вопрос