Frage

Obwohl ich meine ID -Spalte mit markiert habe mit .Identity(), Das generierte Datenbankschema hat nicht IDENTITY Setzen Sie auf True, was mir Probleme gibt, wenn ich Datensätze hinzufüge. Wenn ich das Datenbankschema (in SQL Management Studio) manuell bearbeite, um das zu haben Id Säule gekennzeichnet IDENTITY, alles funktioniert so wie ich es will - ich kann ef das einfach nicht alleine machen.

Dies ist meine vollständige Zuordnung:

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

Da ich EF zum Erstellen und Wiederaufbau der Datenbank für Integrationstests verwende, muss ich wirklich automatisch durchgeführt werden ...

BEARBEITEN:HM ... In einem Kommentar wurde ich gebeten, genug Code zu geben, um dies auszuführen, und ich habe meinen Code in eine Konsolen-App einschnitten und gepasst . Ich glaube, ich habe irgendwo einen Methodenanruf vergessen, obwohl ich nicht herausfinden konnte, wo.

Ich werde den Code für Arbeitslösungen in einer Antwort auf diesen Beitrag veröffentlichen, falls jemand anderes danach sucht.

War es hilfreich?

Lösung

Das Ausführen dieses Codes löst das Problem. Ich denke, ich muss irgendwo einen Schritt vergessen haben. Wenn Sie also das gleiche Problem haben, stellen Sie sicher, dass Sie all diese Dinge tun:

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top