Ich habe eine Datenbank und eine Reihe von Tabellen, die bereits Daten enthalten. Ich verwende Code zuerst. Nun wurde ich gebeten, der Datenbank eine Kategorie Tabelle hinzuzufügen und damit einige der anderen Tabellen so zu ändern, dass sie über einen Fremdschlüssel auf diese Tabelle verweisen. Ich weiß durch vorherige Erfahrung, dass, wenn ich die Datenbank nach dem Ändern der Modelle aktualisieren, wird es stöhnen, weil ein FK nicht 0 haben kann. Seed Methode, um tatsächlich die Fremdschlüssel als die Datenbank zu aktualisieren ist aktualisiert.EntityFramework aktualisieren vorhandene Datensätze mit neuen Fremdschlüssel
Ich möchte so etwas tun:
protected override void Seed(DatabaseContext context)
{
// Create our categories
context.Categories.AddOrUpdate(m => m.Id,
new Category { Id = 1, Name = "Cameras" },
new Category { Id = 2, Name = "Televisions" }
);
// Get all our current feeds
var feeds = context.Feeds.ToList();
context.Feeds.AddOrUpdate(m => m.Id, feeds.Select(m => m.CategoryId = 1).ToArray());
}
Kann mir jemand mitteilen, wie ich könnte dies tatsächlich tun? Oder wenn es einen anderen Weg gibt, es zu tun?
context.Feeds.ForEach (f => f.CategoryId = 1); –
@SteveGreene, 'Foreach' ist eine Methode von' List ', es wäre \t ' context.Feeds.ToList(). ForEach (f => f.CategoryId = 1); ' –
octavioccl
Sie können eine Null FK haben auch, wenn Sie keine CategoryId für alles brauchen. Null ist für einen FK gültig, wenn Sie dies im Design der Tabelle zulassen. –