Проблема здесь в том, что типом свойства профиля по умолчанию является bool, который не может иметь тип NULL.По умолчанию он всегда имеет значение false.
Вы всегда можете создать собственный класс для инкапсуляции пола / пола и использовать его вместо bool.Таким образом, когда значение не установлено, класс затем попытается создать экземпляр и вернуться к нулю при необходимости.
Изменения в веб-конфигурации:
<profile defaultProvider="MyProfileProvider" inherits="FTS.Membership.Profile.MyProfileProvider,FTS.Membership">
<providers>
<clear/>
<add name="MyProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="FTS.Membership.Profile.MyProfileProvider,FTS.Membership"/>
</providers>
<properties>
<add name="first_name" type="string" serializeAs="String" defaultValue=""/>
<add name="last_name" type="string" serializeAs="String" defaultValue=""/>
<add name="initial" type="string" serializeAs="String" defaultValue=""/>
<add name="email" type="string" serializeAs="String"/>
<add name="active" type="bool" serializeAs="String" defaultValue="false"/>
<add name="creation_date" type="datetime" serializeAs="String"/>
<add name="update_date" type="datetime" serializeAs="String"/>
<add name="last_activity_date" type="datetime" serializeAs="String"/>
<!--<add name="sex" type="bool" serializeAs="String" defaultValue="false"/>-->
</properties>
</profile>
и классе:
using System;
using System.Web.Profile;
using System.Collections.Generic;
namespace FTS.Membership.Profile
{
public class MyProfileProvider : ProfileBase
{
public bool? sex
{
get {
if (base["sex"] == null)
{
return null;
}
return (bool)base["sex"];
}
set { base["sex"] = value; }
}
}
}