سؤال

فقط باستخدام هذا كمثال ...

فيما يلي الأعمدة الموجودة في جدول UserProfile الخاص بي:
ملف البطاقة الشخصية (المفتاح الأساسي)
معرف المستخدم (مفتاح غريب)
عنوان
رقم التليفون

الآن، عندما أرغب في إضافة مستخدم جديد إلى قاعدة البيانات باستخدام LINQ إلى الكيانات، فإليك ما أفعله:

UserProfile profileToAdd;
profileToAdd.ProfileID = 0;
profileToAdd.Address = "123 MyStreet";
profileToAdd.PhoneNumber = "123-4567";
/* How do I add in the UserID here? */

_myDB.AddToUserProfiles(profileToAdd);

بعض الأسئلة...

  1. هل هناك أي شيء خاص في التعامل مع المفاتيح الخارجية أحتاج إلى معرفته، أم يمكنني تعيينها تمامًا كما فعلت مع العنوان أو رقم الهاتف؟

  2. معرف المستخدم هو دليل، وأحتاج إلى استعادته من معرف المستخدم الحالي.لا يبدو أنني أستطيع الوصول إلى فئة العضوية أو فئة المستخدم (هذه مكتبة C# لذا أعتقد أنها تحتاج إلى مرجع بطريقة أو بأخرى، ولكن مشروعي يشير بالفعل إلى مكتبتي لذا لا يمكنني الرجوع إليها وإلا سأفعل ذلك) لديك تبعية دائرية)

  3. لا أفهم تمامًا كيفية التعامل مع المرشدين.عند التنفيذ getProfileByUserName(string userName), ، هنا مشكلتي..

أولاً، لا يمكنني استرداد معرف المستخدم، إليك ما حاولت:

Guid currUser = (Guid)from user in _ myDB.aspnet_Users
                             where user.UserName == userName
                             select new { user.UserId };

لكنها تقول أنني لا أستطيع إرسالها إلى المرشد لسبب ما.

إذا كان بإمكانك تقديم أي فكرة عن أي من هذه الأسئلة سأكون ممتنًا للغاية!

شكرًا،
غير لامع

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

المحلول

إذا كانت قاعدة البيانات تحتوي على القيود المناسبة لعلاقة المفتاح الخارجي، فيجب أن يكون هناك عضو في ملفك UserProfile الطبقة، التي تشير إلى أ User هدف.قد يكون الاسم غريبًا بعض الشيء، مثل UserProfileUser أو شيء من هذا القبيل.

ومع ذلك، يمكنك تغيير هذا الاسم في الرسم التخطيطي.ما عليك سوى تعيين مؤشر لكائن كيان المستخدم وسيقوم الإطار بتعيين المعرف الصحيح لك.

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