سؤال

لدي 3 جداول (والكيانات المقابلة في نموذج الكيان):معرف - مفتاح بريماي ...أعمدة أخرى

لاعب:معرف - المفتاح الأساسي ...أعمدة أخرى

Gameplayer (يمكن للاعب المشاركة في العديد من الألعاب) GameID -> مفتاح Forefors من Game PlayerId -> مفتاح خارجي من اللاعب ...أعمدة أخرى

في الكود الخاص بي، يتوفر لي معرف اللعبة ومعرف اللاعب من خلال وسائل أخرى.باستخدام هذا أريد معرفة ما إذا كان اللاعب (playerId) يشارك في لعبة معينة (gameId).لذلك أنا أفعل هذا:(الكيانات هي كائن السياق الخاص بي)

استعلام iqueryable = intities.gameplayer.where (gp => ((gp.game.id == gameid) && (gp.player.id == playerid))) إذا كان الاستعلام يرجع صفًا ، فأنا أعلم أن اللاعب يشارك في تلك اللعبة.

قرأت عدة مدونات MSDN حول مراجع الكيانات وأنا في حيرة من أمري.يبدو أن MSDN توصي بأن علي أولاً التحقق من كائن EntityReference بحثًا عن IsLoaded وإذا لم يتم تحميله، فيجب علي تحميل الكيان وبعد ذلك فقط يجب علي استخدام ذلك في الاستعلام.

يحتوي GamePlayer على GamePlayer.GameReference وGamePlayer.PlayerReference، لكن لا يمكنني التحقق من تحميل المرجع لأنه ليس لدي كائن GamePlayer في متناول اليد.يحتوي جدول GamePlayer على العلاقتين 1...* وهذا كل ما في الأمر.لا بد لي من الاستعلام عن GamePlayer فقط باستخدام GameId وPlayerId.ما الخطأ الذي أفعله هنا؟

هل يجب أن أحصل بدلاً من ذلك على كائن اللاعب (أو اللعبة) (باستخدام معرفاتهم) والتحقق من مجموعة كيان GamePlayer بدلاً من ذلك؟كان SQL بسيطًا جدًا.إذا كان هذا ساذجًا جدًا، آسف، فأنا أواجه صعوبة في ترجمة استعلام SQL الخاص بي إلى استعلامات الكيان.

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

المحلول

أعتقد أن ما تفعله جيد.بقدر ما أعرف، كل ما تستخدمه في تعبير لامدا لا يجب أن يتم تحميله بشكل صريح.

أعتقد أن ما يشير إليه MSDN هو ما إذا كنت ستحصل على كيان GamePlayer ثم الوصول إلى كيان مرتبط مثل هذا:

GamePlayer gp = الكيانات.GamePlayer.First( g=> g.id = 2);

string gameName = gp.Game.name;

قد يؤدي ذلك إلى حدوث استثناء (سيتعين عليك إما تحميل اللعبة بشكل منفصل أو التأكد من تحميلها على النحو التالي:الكيانات.GamePlayer.Include("لعبة").First( g => g.id = 2))

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top