سؤال

أنا جديد على Linq to Sql، ما أود تحقيقه هو إنشاء خاصية واحدة للقراءة فقط في فئة الكيان وهي عبارة عن مزيج من حقول متعددة، وعلى وجه التحديد أريد إنشاء حقل اسم يجمع بين العنوان والاسم الأول و اسم العائلة.

أستطيع أن أرى كيفية القيام بذلك عن طريق تغيير ملف .designer.cs ولكن أعلم أنه ليس من المفترض أن أتطرق إليه.

أحاول القيام بذلك حتى أحصل في البيانات الديناميكية على عمود واحد بدلاً من أعمدة متعددة.

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

المحلول

الحيلة هنا هي استخدام أ partial class;إنشاء ملف .cs جديد، و في نفس مساحة الاسم أضف فئة جديدة تحمل اسم النوع الخاص بك:

namespace My.Data.Namespace {
    partial class Employee {
        public string Foo {
            get {return Forename + " " + Surname; } // etc
        }
    }
}

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

تحذير واحد:إذا تم استدعاء dbml الخاص بك MySystem.dbml, ، ثم يتجنب خلق شيء MySystem.cs ملف (من المفترض أن يكون لفصولك الجزئية)؛يوجد خطأ في منشئ التعليمات البرمجية يمكن أن يتسبب في فشل ذلك.مجرد تسميته شيئا آخر.

نصائح أخرى

وفي LINQ حدد بيانكم، لماذا لا يتم استخدام شيء من هذا القبيل:

select new {FullName = x.FirstName + " " + x.Surname};

ولست متأكدا إذا كان بناء الجملة 100٪ هناك ولكن تحقق من هذه الفكرة.

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