Domanda

Supponiamo che io abbia queste tabelle:

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

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)

Come posso aggiornare sia il nome di Fruit che il suo stato nel database in queste situazioni ?:

  1. Aggiorna un pezzo di Fruit proveniente da una precedente chiamata L2E
  2. dato un numero intero corrispondente al FruitID (ovvero, non ho in mano un oggetto Fruit completo per iniziare)

VB o C # va bene, grazie!

È stato utile?

Soluzione

Funziona ma non è quello che speravo:

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

Sicuramente c'è un modo più pulito per farlo che non richiede stringhe di codifica (che introduce eccezioni di runtime se faccio un refuso).

Altri suggerimenti

Se un oggetto Fruit viene passato a un altro metodo, puoi:

  1. Passa un riferimento all'oggetto di contesto insieme a Fruit e chiama SaveChanges ()

  2. Apporta le modifiche all'oggetto Fruit nel metodo di livello inferiore e chiama SaveChanges () nel metodo di chiamata (puoi verificare se è stato modificato se vuoi evitare inutili chiamate DB.)

Codice:

//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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top