Problemas con los métodos Eliminar e Insertar de ObjectDataSource de GridView en ASP.NET

Quiero usar un ObjectDataSource con un GridView en ASP.NET. Mostrar los datos en el GridView funciona. Ahora agrego un CommandField a GridView para permitir también editar los datos. El Método de actualización funciona bien, pero tengo problemas para eliminar e insertar:

Cuando hago clic en el enlace Eliminar en GridView, se llama al DeleteMethod configurado, pero con el @ incorrec testSystemEndpoint parámetro. En lugar del objeto de negocio que debería eliminarse, es una instancia simple con todos los campos 'nulos'. Por lo tanto, DeleteMethod configurado no puede eliminar la entrada.Cuando hago clic en el enlace Insertar en GridView, no sucede nada. El InsertMethod configurado no se llama.

My ObjectDataSource se ve así:

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

Mi BusinessObject Manager es 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;
        }
    }
}

e alegraría mucho si alguien pudiera ayudarme con mis dos problemas.

Respuestas a la pregunta(2)

Su respuesta a la pregunta