Тип '' в сборке '' не помечен как сериализуемый. LINQ к SQL - PullRequest
3 голосов
/ 14 июня 2011

Я использую asp.net и настроил сеансы для хранения на сервере SQL.У моего porject есть много объектов и несколько linq-to-sql dbml.Я настроил все они для однонаправленной сериализации, а также внес несколько пользовательских изменений.

При запуске приложения я получаю эту ошибку в своем обработчике события application_error

Type 'Data.Karaoke.spCWP_SelUserPrivilegesResult 'в сборке' App_Code.thzd8p2j, версия = 0.0.0.0, Culture = нейтральный, 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;
      }
    }
  }
}

Как определить причину ошибки?Или что означает ошибка?

Я не уверен, как решить или что искать, чтобы решить проблему.

Ответы [ 2 ]

6 голосов
/ 14 июня 2011

Похоже, что вы запускаете сериализацию в своем приложении. Сериализация, отличная от сериализации DataContract.

Создайте новый файл и введите следующее:

[Serializable]
public partial class spCWP_SelUserPrivilegesResult { }

Вы делаете это в отдельном файле на случай, если вы обновите свой dbml-файл из базы данных.

0 голосов
/ 14 июня 2011

не знаю, так ли это для SQL Server CLR, но с .Net в целом, я бы рекомендовал вам обновить ваш код до:

[Serializable()]
[DataContract()]
public partial class spCWP_SelUserPrivilegesResult
{
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...