الوصول إلى أعضاء النصف الآخر من فئة جزئية
-
04-07-2019 - |
سؤال
أنا فقط أتعلم العمل مع فصول جزئية في 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. خلاف ذلك في عرض الفصل ومشاهد الكائن ، ترى فئتين منفصلتين - على ما يبدو في نفس مساحة الاسم ، ولكن ليس حقًا. لست متأكدًا مما إذا كان هذا خطأ أم أنني أفعل شيئًا خاطئًا.
ولكن ، على أي حال ، وضع ملف الفئة الجزئي في نفس المشروع الذي يعمله النموذج الخاص بك.