2016-03-22 6 views
0

Ich habe ein Problem mit meinem Modell nicht updaing, aber es scheint, es gibt nur einen Aspekt, dass.C# Dapper Model nicht nur ein Element aktualisieren

Ich habe folgendes Setup

public class Stages 
{ 
    public int ItemNumber {get; set;} <-- seems to be updating correctly 
    public string ItemName {get; set;} <-- seems to be updating correctly 
    public int ItemStage {get; set;} <-- always results in 0 
} 

public interface IStageRepository 
{ 
    List<Stages> GetAll(); 
} 

public class StageRepository : IStageRepository 
{ 
    private IDbConnection db = new SqlConnection(ConfigurationManager.ConnectionStrings["StagesConnection"].ConnectionString); 

    public List<Stages> GetAll() 
    { 
     return this.db.Query<Stages>("SELECT * FROM Stages_vw").ToList(); 
    } 
} 

Unter meinem Homecontroller habe ich die folgende

IStageRepository stagesRepo = new StageRepository(); 

public ActionResult Index() 
{ 
    return (stagesRepo.GetAll()); 
} 

Hier ist das Schema der Ansicht

TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME COLUMN_DEFAULT 
WebServices  dbo    Stages_vw ItemNumber NULL 
WebServices  dbo    Stages_vw ItemName NULL 
WebServices  dbo    Stages_vw Stage  NULL 

Wenn ich ein „SELECT tun * FROM Stages_vw "in SSMS sind die Ergebnisse korrekt

Ich habe über diese Stellen gestoßen, aber ich ein wenig verwirrt fühle jede Hilfe sehr

ANTWORT pro @chipples

Dies war auf einen Spaltennamen in der Ansicht nicht passend

würde geschätzt

dapper-simple-mapping

dapper-intermediate-mapping

Dapper Documentation

+1

Ty explizit die ausgewählten Felder anstelle von 'Select *' – markpsmith

+1

Was ist das Schema Ihrer Tabelle Stages_vw? – Steve

+0

@markpsmith gleiches Ergebnis bei Angabe von 'wählen Sie ItemName, ItemNumber, ItemStage' – ondrovic

Antwort

1

Laut den Kommentaren ist das Problem, dass die Namen in Ihrem Modell und in Ihrer Datenbank nicht übereinstimmen (ItemStage im Modell, Bühne in der DB). Dapper benötigt die passenden Namen, um automatisch zu mappen. Sie sollten die Eigenschaft in Ihrem Modell entweder in Stage umbenennen oder einen Alias ​​in Ihrem SQL verwenden ("SELECT Stage AS ItemStage ...").

Verwandte Themen