سؤال

أنا فقط أتعلم العمل مع فصول جزئية في VB.NET و VS2008. على وجه التحديد ، أحاول تمديد فئة LINQ إلى SQL التي تم إنشاؤها تلقائيًا بواسطة SQLMetal.

يبدو الفئة التي تم إنشاؤها تلقائيًا هكذا:

Partial Public Class DataContext
    Inherits System.Data.Linq.DataContext

 ...


<Table(Name:="dbo.Concessions")>  _
Partial Public Class Concession

 ...

     <Column(Storage:="_Country", DbType:="Char(2)")>  _
   Public Property Country() As String
          ...
    End Property

 ...

End Class

في ملف منفصل ، إليك ما أحاول القيام به:

Partial Public Class DataContext

    Partial Public Class Concession

        Public Function Foo() as String
            Return DoSomeProcessing(Me.Country)
        End Function

    End Class

End Class

... لكني أحصل على jaggies الأزرق تحتMe.Country'والرسالة 'Country' is not a member of 'DataContext.Concession'. كلا نصفي الطبقة الجزئية في نفس مساحة الاسم.

فكيف يمكنني الوصول إلى خصائص النصف المولد تلقائيًا من الفئة الجزئية ، من نصف الطبقة الجزئية؟

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

المحلول

ما لم يكن VB.NET ينشئ أشياء مختلفة في ملفات LINQ إلى SQL من C# فئات جداول DB ليست ضمن فئة DataContext ، بجانبها فقط.

لذلك لديك الفصل myNamespace.datacontext.concession عندما يكون النصف الآخر من الطبقة الجزئية حقًا myNamespace.concession

نصائح أخرى

(هذا يتعلق بـ vb.net - قد يكون الاختلافات مع مشاريع C#)

أضع الكيانات الخاصة بي في مساحة الاسم الخاصة بهم من خلال تكوين خاصية نموذج LINQ-to-SQL.

مثل myco.myproj.business.entities

ثم أضيف كيانات أعمال غير LINQ هناك أيضًا ، لذلك فهي جميعها في نفس مساحة الاسم.

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

ولكن ، على أي حال ، وضع ملف الفئة الجزئي في نفس المشروع الذي يعمله النموذج الخاص بك.

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