سؤال

دون الخوض في ما إذا كان هذا هو فكرة جيدة أو سيئة:

هل من الممكن تخزين LINQ إلى SQL كائن المجال في ASP.NET الدورة عند الدورة خارج العملية?

[عدل] أنا حاليا الحصول على الخطأ التالي و سألت هذا السؤال لأنني أظن ينق إلى كائنات SQL:

غير قادر على تسلسل الدورة الدولة.في 'StateServer" و "SQLServer' واسطة ، ASP.NET سوف تسلسل الدورة الكائنات الدولة ، ونتيجة عدم تسلسل الكائنات أو MarshalByRef الأشياء غير مسموح بها.نفس القيد ينطبق إذا مماثلة التسلسل يتم عن طريق العرف الدورة الدولة متجر في 'مخصص' واسطة.[/عدل]

على سبيل المثال

Session["Zoo"] = new Zoo() { 
                         new Lion(),
                         new Tiger(), 
                         new Elephant()
                  }

حيث:

  • حديقة حيوان الأسد والنمر والفيل كل ما يخرج من ZooDataContext

و شبكة الإنترنت.ملف يحتوي على

<sessionState
       mode="StateServer"
       stateConnectionString="tcpip=127.0.0.1:42424"
       stateNetworkTimeout="10"
       sqlConnectionString="SqlStateConnectionString"
       sqlCommandTimeout="30"
       timeout="20"
       regenerateExpiredSessionId="true"/>
هل كانت مفيدة؟

المحلول

تسلسل لهم باستخدام datacontractserializer قبل تخزينها في الدورة أو أي شيء آخر قد ترغب في تسلسل... نوقشت مؤخرا هنا:

http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/81c84ff4-059b-474f-9c69-b8c59027fd48

نصائح أخرى

استخدام ثنائي المنسق (مثل SessionState استخدام أعتقد), سوف تحتاج إلى إنشاء التعليمات البرمجية الخاصة بك نفسك من DBML (أفعل ذلك حاليا مع Linq2Sql قالب T4).

التالية تحتاج إلى أن تكون علامة [NonSerialized]:

  • EntityRef
  • EntitySet
  • جميع الأحداث (سوف تحتاج إلى التفكير خارج الصندوق أن تفعل هذا التمرين لمدة القارئ)

أيضا منشئ المنطق تحتاج إلى نقلها إلى OnCreated.يجب أيضا التأكد من OnCreated ويسمى عند تسلسل لذلك الكائن يمكن أن تكون مفيدة مرة أخرى.يتم مع [OnDeserializing] السمة.

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

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