Frage

Angenommen, ich habe diese Tabellen:

Fruits
 - FruitID       INT PK
 - FruitName     NVARCHAR(30)
 - FruitStatusID INT FK: Statuses

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)

Wie aktualisiere ich sowohl den Namen des Obst- und seinen Status in der Datenbank in diesen Situationen:?

  1. Aktualisieren Sie ein Stück Obst, das aus einem frühen L2E Anruf kam
  2. gegeben eine ganze Zahl mit dem FruitID entspricht (das heißt, ich nicht mit einem vollen Frucht Objekt in der Hand zu starten)

VB oder C # ist es gut, danke!

War es hilfreich?

Lösung

Dies funktioniert aber nicht das, was ich hatte gehofft, für:

int StatusID = 4; // Some ID
Fruit.FruidIDReference.EntityKey = 
    New EntityKey("MyEntities.Statuses", "StatusID", StatusID)

Sicher gibt es einen sauberen Weg, dies zu tun, die nicht hart codierten Strings erfordern (was führt Laufzeitausnahmen, wenn ich einen Tippfehler).

Andere Tipps

Wenn ein Obst-Objekt an einem anderen Methode weitergegeben, können Sie:

  1. Führen Sie einen Verweis auf das Kontextobjekt zusammen mit dem Obst und rufen Sie Savechanges ()

  2. Machen Sie Ihre Änderungen an der Fruit-Objekt in der niedrigeren Stufe Methode und rufen Sie Savechanges () in der Rufmethode (können Sie überprüfen, um zu sehen, ob es wurde geändert, wenn Sie unnötige DB Anrufe zu vermeiden.)

Code:

//Change the name
FruitEntities fe = new FruitEntities();
Fruit f = fe.Friuts.First();
f.FruitName = "NewName";
fe.SaveChanges();

//Get a fruit by ID and change the status
//Statuses will need to be included as an Entity in your model with an association to Fruits
int Id = 2;
int newStatusID = 0;
FruitEntities fe = new FruitEntities();
Fruit f = (from x in fe.Fruits
           where x.FruitID == Id
           select x).First();
Status s = (from y in fe.Statuses
            where y.StatusID = newStatusID
            select y).First();
f.Status = s;
fe.SaveChanges();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top