944 messaggi dal 11 febbraio 2013
Ciao a tutti,
seguendo ancora lo studio di modelbinding ho tentato di spostare i metodi di crud in una partial class MiaClasse (...una sorta di repository)

quando tento di implementare per esempio una delete tipo questa

public void DeleteCustomer()
        {
            var item = new Customers();
            TryUpdateModel(item);
            if (ModelState.IsValid)
            {
                db.Entry(item).State = System.Data.EntityState.Deleted;
                db.SaveChanges();
            }
        }


ottengo:
CS0103 il nome TryUpdateModel non esiste nel contesto corrente.

cosa manca ?

grazie comunque
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,
TryUpdateModel è un metodo ereditato dalla classe base Controller, e quindi non è disponibile nella tua classe repository.


quando tento di implementare per esempio una delete tipo questa

Dovresti spostare il TryUpdateModel nell'action del Controller e fornire al repository l'entità già reidratata.
In pratica: il repository non si deve interessare delle tecniche che usa il client per ricevere le entità dall'utente.

ciao,
Moreno

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
Ho capito...ha senso.

Ma non so come fare...considera che è una webform
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


considera che è una webform

Ok, allora correggo: su WebForms, TryUpdateModel è un metodo derivato da Page. Vuol dire che lo puoi usare dal codefile della tua pagina aspx ovunque tu lo ritenga necessario (es. in un metodo tipo Button1_Click che gestisce il click su un bottone). Grazie a TryUpdateModel, potrai aggiornare le proprietà di una tua istanza di Customer con i valori provenienti dal form. Dopo aver fatto questa operazione, passi il Customer come argomento ai metodi del tuo repository affinché il customer sia creato, aggiornato o eliminato dal db.


Ma non so come fare

Spiega precisamente dove ti blocchi. Più è precisa la spiegazione, più è facile per me aiutarti.

ciao,
Moreno

Enjoy learning and just keep making
944 messaggi dal 11 febbraio 2013
Posso passarti il codice nella speranza che tu abbia una soluzione con il solito
northwind mappato da entityframework

markup
<asp:ListView ID="ListView" runat="server"
          SelectMethod="GetCustomers" DataKeyNames="CustomerID" 
          ItemType="Customer" OnCallingDataMethods="ListView_CallingDataMethods" 
                     UpdateMethod="UpdateCustomer" >        
          <ItemTemplate>
            <li>
              <%# Item.CompanyName %><br />
              <%# Item.Address %>, <%# Item.City %> - <%#Item.Country %>
              <asp:Button ID="Button1" runat="server" CommandName="Edit" Text="Modifica" />
            </li>
          </ItemTemplate>
          <EditItemTemplate>
            <li>
              <asp:TextBox Text='<%# BindItem.CompanyName %>'
                ID="CompanyName" runat="server" />
              <asp:TextBox Text='<%# BindItem.Address %>'
                ID="Address" runat="server" />
              <asp:TextBox Text='<%# BindItem.City %>'
                ID="City" runat="server" />
              <asp:TextBox Text='<%# BindItem.Country %>'
                ID="Country" runat="server" />

              <asp:LinkButton ID="UpdateButton" runat="server"
                CommandName="Update" Text="Aggiorna" OnClick="UpdateButton_Click" />
              <asp:LinkButton ID="CancelButton" runat="server"
                CommandName="Cancel" Text="Annulla" />
            </li>
          </EditItemTemplate>

        
        </asp:ListView>

code behind
northwindEntities db = new northwindEntities();

   
    protected void ListView_CallingDataMethods(object sender, CallingDataMethodsEventArgs e)
    {
        e.DataMethodsObject = new CustomerRepository();
    }



    protected void UpdateButton_Click(object sender, EventArgs e)
    {
        var item = new Customer();
        TryUpdateModel(item);
    }


CustomerRepository.cs
public class CustomerRepository
{
    northwindEntities db = new northwindEntities();
  public CustomerRepository()
  {

  }
    public IQueryable<Customer> GetCustomers()
    {
        var customers = db.Customers.AsQueryable();

        return customers;
    }

    public void UpdateCustomer(Customer customer)
    {
        db.Entry(customer).State = System.Data.EntityState.Modified;
        db.SaveChanges();     
    }
    

}


Lo so non mi sono spiegato ma spero in un tuo copia incolla...
grazie mille come sempre...soprattutto per la pazienza
944 messaggi dal 11 febbraio 2013
grazie Moreno

ho capito solo dopo aver fatto un progetto in MVC che il codice è sbagliato e tryupdatemodel non ha nulla a che fare :) :)

mi perdonerete non sono un programmatore

percui occorre fare nella partial class (il modello diciamo)

public void AddLavoro(myEntity myEnt)
    {
        using (BackupEntities db = new BackupEntities())
        {
            myEntity item = new myEntity ();
            item.Lavori = myEnt.Lavori;
            ...ecc

                db.Entities.Add(myEnt);
                db.SaveChanges();

        }
    }


grazie ancora
l'importante è arrivarci

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.