2012-10-03 1 views
6

Effettuiamo la mappatura qui per le tabelle .. Come mappare le stored procedure qui?Come mappare una stored procedure utilizzando DBContext in ASP.NET MVC 3 Entity Framework

public class AppDBContext : DbContext 
{ 
    public DbSet<UserAccount> UserAccount { get; set; } 
    public DbSet<GetUserAccounts> GetGetUserAccounts { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<UserAccount>().ToTable("UserAccount"); 
     modelBuilder.Entity<Customer>().ToTable("Customer"); 

     base.OnModelCreating(modelBuilder); 
    } 
} 
+1

se si utilizza prima il codice EF, forse questa risposta potrebbe aiutare: http://stackoverflow.com/a/6622949/390819 – GolfWolf

risposta

6

Il codice non supporta le stored procedure.

È possibile eseguire script in un database initialiser utilizzando:

string sql = "CREATE PROCEDURE [MyProc]..."; 
context.Database.ExecuteSqlCommand(sql); 

è possibile eseguire le procedure di loro dal contesto in questo modo:

string command = "EXEC MyProc"; 
IEnumerable<T> results = context.Database.SqlQuery<T>(command, null); 

Personalmente, ho avvolgere questo in un bel modello OO . Ho una classe SP specializzata con metodi fortemente tipizzati. Questi metodi sono decorati con un attributo che indica all'inizializzatore del DB di creare una procedura memorizzata di un determinato nome da una determinata sorgente. I metodi di tipo forte chiamano la stored procedure.

0

aggiungere questo in AppDBContext:

public virtual ObjectResult<ResultObject> MyStoredProcedure(string parameter) 
     { 
      ((IObjectContextAdapter)this).ObjectContext.MetadataWorkspace.LoadFromAssembly(typeof(ResultObject).Assembly); 

      var Param = parameter!= null ? 
       new ObjectParameter("Column", parameter) : 
       new ObjectParameter("Column", typeof(string)); 

      return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<ResultObject>("MyStoredProcedure", Param); 
     } 

Aggiungi questo edmx file di

<FunctionImport Name="MyStoredProcedure" ReturnType="Collection(AppDBContext.ResultObject)" > 
     <Parameter Name="ZipCode" Mode="In" Type="String" /> 
     </FunctionImport> 

0

Sto utilizzando DB Contesto e DB Primo approccio. Dopo aver creato le stored procedure, accedere alla pagina del modello in VS e selezionare Aggiorna modello dal database nelle opzioni del tasto destro del mouse nella pagina Modello. quindi in Model Browser> Function Imports seleziona SP importati e se voglio cambiare i loro nomi, i valori di ritorno, ecc. dopo tutto questo potrei usare SP come i metodi interni o altre classi di entità. ad esempio si supponga di avere un SP il cui nome è "sp_UserUpdate" questo SP prende userName e per l'esame userAge come parametro interno e ha res come parametro out per lo stato dei risultati. Dopo aver importato SP in VS, è possibile utilizzarlo come indicato di seguito:

System.Data.Objects.ObjectParameter pRes = new System.Data.Objects.ObjectParameter("res", 0); 
db.sp_UserUpdate(userName , userAge , pRes); 

Spero che questo aiuto.