Вопрос

Хотя я отметил мою идентификационную колонку с .Identity(), сгенерированная схема базы данных не имеет IDENTITY Установите значение true, что дает мне проблемы, когда я добавляю записи. Если я вручную отредактирую схему базы данных (в студии управления SQL), чтобы иметь Id столбец отмечен IDENTITY, Все работает, как я хочу, - я просто не могу сделать это сделать это само собой.

Это мое полное отображение:

public class EntryConfiguration : EntityConfiguration<Entry>
{
    public EntryConfiguration()
    {
        Property(e => e.Id).IsIdentity();
        Property(e => e.Amount);
        Property(e => e.Description).IsRequired();
        Property(e => e.TransactionDate);

        Relationship(e => (ICollection<Tag>)e.Tags).FromProperty(t => t.Entries);
    }
}

Как я использую EF, чтобы построить и повторно создать базу данных для тестирования интеграции, мне действительно нужно, чтобы это было сделано автоматически ...

РЕДАКТИРОВАТЬ:Хм ... В комментарии мне было предложено дать достаточно кода, чтобы выполнить это, поэтому я вырезал и - вставил свой код в приложение для консоли (так что вам не понадобится все мои занятия ...) и вдруг это просто сработало Отказ Я думаю, я забыл какой-то метод позвонить где-то, хотя я не смог выяснить, где.

Я опубликую код рабочего решения в ответе на этот пост, если кто-то еще ищет его.

Это было полезно?

Решение

Запуск этого кода решает проблему. Я думаю, что я должен забыл шаг где-то, поэтому, если у вас такая же проблема, убедитесь, что вы делаете все эти вещи:

var connection = GetUnOpenedSqlConnection();       // Any connection that inherits
                                                   // from DbConnection is fine.

var builder = new ContextBuilder<ObjectContext>(); // I actually had my own class
                                                   // that inherits from 
                                                   // ObjectContext, but that was 
                                                   // not the issue (I checked).

builder.Configurations.Add(EntryConfiguration);    // EntryConfiguration is the 
                                                   // class in the question

var context = builder.Create(connection);

if (context.DatabaseExists())
{ context.DeleteDatabase(); }

context.CreateDatabase();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top