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();
}
Благодарю.