إعادة تسمية LinQ 2 خصائص كيان SQL من خلال فصول جزئية

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

  •  09-09-2019
  •  | 
  •  

سؤال

هل يمكنني استخدام فصول جزئية لإنشاء خصائص تشير إلى خاصية جمعية تم إنشاؤها بواسطة مصمم L2S. أيضا، هل سأكون قادرا على استخدام العقار الجديد في استفسارات؟

كيف يمكنني تحقيق ذلك؟

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

المحلول

نعم يمكنك ذلك، ولكن عليك تطبيق السمات نفسها حيث تم إنشاء خاصية LinQ2SQL IE

    [Association(Name="Test_TestData", Storage="_TestDatas", ThisKey="SomeId", OtherKey="OtherId")]
    public System.Data.Linq.EntitySet<TestData> MyTestDatas
    {
        get
        {
            return this.TestDatas;
        }
    }

TestDatas يجري العلاقة الأصلية.

تحديث: استعلام عينة ران:

        var context = new DataClasses1DataContext();
        var tests =
            from d in context.Tests
            where d.MyTestDatas.Any(md=>md.MyId == 2)
            select new
            {
                SomeId = d.SomeId,
                SomeData = d.SomeData,
                Tests = d.MyTestDatas
            };
        foreach (var test in tests)
        {
            var data = test.Tests.ToList();
        }

نصائح أخرى

إذا كنت ترغب فقط في إعطاء اسم مختلف إلى خاصية الجمعية، فما عليك سوى استخدام صفحة الخصائص لالتقاط الارتباط وإعادة تسمية الوالد و / أو خاصية الأطفال. سيؤدي ذلك إلى تغيير اسم EntityRef / Enterityset في الفصل.

تعديل: الجانب السلبي لاستخدام خاصية منفصلة في فئة جزئية هو أن LINQ لن يتمكن من استخدامه عند إنشاء استعلامات - أساسا سيتم إجبارك على الحصول على الكيانات دائما قبل أن تتمكن من استخدام الخصائص ذات الصلة على الكائن. من خلال إعادة تسمية LinQ لاستخدام الخصائص ذات الصلة في إنشاء الاستعلام الذي يمكن أن يؤدي إلى استعلام أكثر كفاءة. على سبيل المثال، إذا كنت ترغب في الحصول على كيانات حيث يحتوي كيان ذي صلة على قيمة خاصية معينة، فستتسم كيان مزخرف السمة LinQ لإنشاء SQL لسحب القيم المطابقة فقط من قاعدة البيانات. مع تنفيذ العقارات السذاجة (يبذل الأمر ببساطة الملكية العلاقة الأساسية، في الواقع إعادة تسميته)، سوف تضطر إلى الحصول على جميع الكيانات أولا، ثم قم بتصفية في طلبك.

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