Pregunta

Supongamos que tengo estas tablas:

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

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)

¿Cómo actualizo el nombre y el estado del Fruit en la base de datos en estas situaciones ?:

  1. Actualiza un pedazo de fruta que vino de una llamada L2E anterior
  2. dado un entero correspondiente a FruitID (es decir, no tengo un objeto Fruit completo en la mano para empezar)

VB o C # está bien, gracias!

¿Fue útil?

Solución

Esto funciona pero no es lo que esperaba:

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

Seguramente hay una forma más limpia de hacerlo que no requiere cadenas de codificación (lo que introduce excepciones en tiempo de ejecución si hago un error tipográfico).

Otros consejos

Si un objeto Fruit se pasa a otro método, puede:

  1. Pase una referencia al objeto de contexto junto con el Fruit y llame a SaveChanges ()

  2. Realice sus modificaciones al objeto Fruit en el método de nivel inferior y llame a SaveChanges () en el método de llamada (puede verificar si se ha modificado si desea evitar llamadas de base de datos innecesarias).

Código:

//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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top