#c# #sql-server #linq-to-sql #asp.net-session
#c# #sql-сервер #linq-to-sql #asp.net-session
Вопрос:
Я использую asp.net и настроили сеансы на хранение в SQL server. Мой порпроект содержит много объектов и несколько linq-to-sql dbml. Я настроил все из них на однонаправленную сериализацию, а также внес несколько индивидуальных изменений.
Когда я запускаю приложение, я продолжаю получать эту ошибку в моем обработчике событий application_error
Введите ‘Data.Karaoke.spCWP_SelUserPrivilegesResult’ в сборке ‘App_Code.thzd8p2j, Version=0.0.0.0, Culture= neutral, PublicKeyToken=null’, чтобы не помечаться как сериализуемый.
из-за ошибки я не уверен, исходит ли она из файла dbml.designer.cs, который является этим кодом:
[Function(Name="dbo.spCWP_SelUserPrivileges")]
public ISingleResult<spCWP_SelUserPrivilegesResult> spCWP_SelUserPrivileges([Parameter(Name="IDCWPUser", DbType="Int")] System.Nullable<int> iDCWPUser)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), iDCWPUser);
return ((ISingleResult<spCWP_SelUserPrivilegesResult>)(result.ReturnValue));
}
и
[DataContract()]
public partial class spCWP_SelUserPrivilegesResult
{
private int _IDTypeCWPModule;
private string _TypeKey;
private bool _Security;
public spCWP_SelUserPrivilegesResult()
{
}
[Column(Storage="_IDTypeCWPModule", DbType="Int NOT NULL")]
[DataMember(Order=1)]
public int IDTypeCWPModule
{
get
{
return this._IDTypeCWPModule;
}
set
{
if ((this._IDTypeCWPModule != value))
{
this._IDTypeCWPModule = value;
}
}
}
[Column(Storage="_TypeKey", DbType="VarChar(10) NOT NULL", CanBeNull=false)]
[DataMember(Order=2)]
public string TypeKey
{
get
{
return this._TypeKey;
}
set
{
if ((this._TypeKey != value))
{
this._TypeKey = value;
}
}
}
[Column(Storage="_Security", DbType="Bit NOT NULL")]
[DataMember(Order=3)]
public bool Security
{
get
{
return this._Security;
}
set
{
if ((this._Security != value))
{
this._Security = value;
}
}
}
}
Как я могу определить, откуда возникла ошибка?
Или что означает ошибка?
я не уверен, как решить или на что обратить внимание, чтобы решить проблему.
Ответ №1:
Похоже, что вы используете какой-то тип сериализации в своем приложении. Сериализация, отличная от сериализации DataContract.
Создайте новый файл и введите следующее:
[Serializable]
public partial class spCWP_SelUserPrivilegesResult { }
Вы делаете это в отдельном файле на случай, если вы обновите свой dbml-файл из базы данных.
Ответ №2:
не знаю, так ли это в среде SQL Server CLR, но с .Net в общем, я бы посоветовал вам обновить ваш код до :
[Serializable()]
[DataContract()]
public partial class spCWP_SelUserPrivilegesResult
{
...
Комментарии:
1. Я внес эти изменения, и теперь я получаю эту ошибку … Введите ‘System.Linq. EnumerableQuery`1[Данные.Сущности. msPlaylistItem]’ не может быть сериализован. Подумайте о том, чтобы пометить его атрибутом DataContractAttribute и пометить все его элементы, которые вы хотите сериализовать, атрибутом DataMemberAttribute. Смотрите документацию Microsoft .NET Framework для других поддерживаемых типов.