1

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

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

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, чтобы построить и заново построить базу данных для тестирования интеграции, мне действительно нужно, чтобы это было сделано автоматически ...

EDIT: Hm ... В комментарии мне было предложено дать достаточно кода для выполнения этого, поэтому я вырезал и вставлял свой код в консольное приложение (так что вам не нужны все мои классы ...) и вдруг это просто сработало. Думаю, я где-то забыл какой-то метод, хотя я не мог понять, где.

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

+0

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

ответ

1

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

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();