كيف يمكنني تحديث كائن الخارجية قيمة المفتاح مع LINQ إلى الكيانات ؟

StackOverflow https://stackoverflow.com/questions/826537

سؤال

أفترض أن هذه الجداول:

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

Statuses
 - StatusID      INT PK
 - StatusName    NVARCHAR(30)

كيف يمكنني تحديث كل الفاكهة اسم ومكانتها في قاعدة البيانات في هذه الحالات؟:

  1. تحديث قطعة من الفاكهة التي جاءت من السابق L2E الاتصال
  2. بالنظر إلى عدد صحيح المقابلة FruitID (أي أن لا يكون كامل الفاكهة الكائن في ناحية البدء)

VB أو C# هو بخير, شكرا!

هل كانت مفيدة؟

المحلول

يعمل هذا ولكن ليس ما كنت آمل:

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

بالتأكيد هناك نظافة طريقة للقيام بذلك التي لا تتطلب الثابت-ترميز السلاسل (الذي يدخل وقت التشغيل الاستثناءات إذا كنت جعل خطأ مطبعي).

نصائح أخرى

إذا الفاكهة كائن ينتقل إلى أسلوب آخر ، يمكنك:

  1. تمرير مرجع إلى كائن سياق جنبا إلى جنب مع الفاكهة دعوة SaveChanges()

  2. جعل تعديلاتك الفاكهة الكائن في المستوى الأدنى طريقة الاتصال SaveChanges() في طريقة الاستدعاء (يمكنك التحقق لمعرفة ما إذا كان قد تم تعديله إذا كنت ترغب في تجنب لا لزوم لها DB المكالمات.)

كود:

//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();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top