Problemas com os métodos Delete e Insert do ObjectDataSource de um GridView no ASP.NET

Eu quero usar um ObjectDataSource com um GridView no ASP.NET. A exibição dos dados no GridView funciona. Agora, adiciono um CommandField ao GridView para permitir também a edição dos dados. O método Update funciona bem, mas tenho problemas ao excluir e inserir:

Quando clico no link Excluir no GridView, o DeleteMethod configurado é chamado, mas com o erro testSystemEndpoint parâmetro. Em vez do objeto de negócios que deve ser excluído, é uma instância simples com todos os campos sendo 'nulos'. Portanto, o DeleteMethod configurado não pode excluir a entrad Quando clico no link Inserir no GridView, nada acontece. O InsertMethod configurado não é chamado.

My ObjectDataSource aparece assim:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
        DataObjectTypeName="[...].TSEndpoint" 
        DeleteMethod="Remove" InsertMethod="Add" 
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetTSEndpoints" 
        TypeName="[...].TSRepository" 
        UpdateMethod="Update"></asp:ObjectDataSource>

@ My BusinessObject Manager é TSRepository.cs:

[DataObject]
public class TSRepository : ITSRepository
{
    private ISessionFactory _sessionFactory;
    private Configuration _configuration;

    public TSRepository()
    {
        _configuration = new Configuration();
        _configuration.Configure();
        _configuration.AddAssembly(typeof(TSEndpoint).Assembly);
        _sessionFactory = _configuration.BuildSessionFactory();
    }

    [DataObjectMethod(DataObjectMethodType.Insert)]
    public void Add(TSEndpoint testSystemEndpoint)
    {
        if (testSystemEndpoint != null)
        {
            using (ISession session = NHibernateHelper.OpenSession())
            using (ITransaction transaction = session.BeginTransaction())
            {
                session.Save(testSystemEndpoint);
                transaction.Commit();
            }
        }
    }

    [DataObjectMethod(DataObjectMethodType.Update)]
    public void Update(TSEndpoint testSystemEndpoint)
    {
        using (ISession session = NHibernateHelper.OpenSession())
        using (ITransaction transaction = session.BeginTransaction())
        {
            session.Update(testSystemEndpoint);
            transaction.Commit();
        }
    }

    [DataObjectMethod(DataObjectMethodType.Delete)]
    public void Remove(TSEndpoint testSystemEndpoint)
    {
        using (ISession session = NHibernateHelper.OpenSession())
        using (ITransaction transaction = session.BeginTransaction())
        {
            session.Delete(testSystemEndpoint);
            transaction.Commit();
        }
    }

    [DataObjectMethod(DataObjectMethodType.Select)]
    public ICollection<TSEndpoint> GetTSEndpoints()
    {
        using (ISession session = NHibernateHelper.OpenSession())
        {
            var testSystems = session
                .CreateCriteria(typeof(TSEndpoint))                    
                .List<TSEndpoint>();
            return testSystems;
        }
    }
}

Ficaria muito feliz se alguém pudesse me ajudar com meus dois problema

questionAnswers(2)

yourAnswerToTheQuestion