Dapper.NET (EmergingIssue hem Reason hem de Durum nesneleri içeriyor) ile iç içe bir nesneye ayarlanan düz bir sonuç döndürmeye çalışıyorum, ancak sorgu tüm sütunları doldurmuyor.Dapper iç içe nesne nesnesi - tüm özellikleri gösterme
public static List<EmergingIssue> GetEmergingIssues()
{
using (var conn = new OracleConnection(Constant.DatabaseConnection()))
{
conn.Open();
StringBuilder sql = new StringBuilder();
sql.Append("SELECT ei.CATEGORY, ei.BRAND, ei.SKU, ei.SKU_DESC SkuDesc");
sql.Append(" ,MANUFACTURING_SITE ManufacturingSite, CURRENT_AVAILABLE_WFC CurrentAvailableWfc");
sql.Append(" ,ei.TARGET_WFC TargetWFC");
sql.Append(" ,ei.DATE_ITEM_ADDED DateItemAdded");
sql.Append(" ,ei.USER_COMMENT UserComment");
sql.Append(" ,ei.PLANNER_ID PlannerID");
sql.Append(" ,ei.REASON_ID ReasonID, r.REASON_DESC ReasonDesc");
sql.Append(" ,ei.STATUS_ID StatusID, s.STATUS_DESC StatusDesc");
sql.Append(" FROM EMERGING_ISSUE ei");
sql.Append(" LEFT OUTER JOIN EMERGING_ISSUE_STATUS s ON s.STATUS_ID = ei.STATUS_ID");
sql.Append(" LEFT OUTER JOIN MERGING_ISSUE_REASON r ON r.REASON_ID = ei.REASON_ID");
List<EmergingIssue> emergingIssues = conn.Query<EmergingIssue, Reason, Status, EmergingIssue>(sql.ToString(),
(ei, r, s) =>
{
ei.Reason = r;
ei.Status = s;
return ei;
},
splitOn: "ReasonID, StatusID").ToList();
return emergingIssues;
}
}
Bu sonuç birçok döndürüyor: Aşağıda
public class EmergingIssue
{
public string Category;
public string Brand;
public string Sku;
public string SkuDesc;
public string ManufacturingSite;
public double? CurrentAvailableWfc;
public Reason Reason;
public Status Status;
public double? TargetWfc;
public DateTime? DateItemAdded;
public string UserComment;
public string PlannerID;
}
public class Reason
{
public int ReasonId;
public string ReasonDesc;
}
public class Status
{
public int StatusId;
public string StatusDesc;
}
Ben (benzer bir StackOverflow soru uyarlanmıştır) benim EmergingIssue sınıfına set sonucu proje çalışılıyor kodudur: Aşağıdaki Pocos görün alanları, ancak UserComment, PlannerID, DateItemAdded ve diğer bazı alanlar doldurulmaz. Sorunun, verileri yansıtan Linq işlevinde yattığı açıktır, ancak nasıl çözüleceğini anlamak için sözdizimine yeterince aşina değilim.
Ayrıca, daha gelişmiş işlevsellik hakkında bilgi edinmek için değerli bir Linq kaynağı var mı? Örneğin, sık sık .Where(x => x.StringValue == "Test")
(ve diğer benzer, basit) işlevselliği kullanıyorum, ancak çoğu zaman yukarıda denediğim gibi işlevler iletmiyorum.
Bunun nedeni, select deyiminde sütun sıralamanızın splitOn ile aynı olmaması nedeniyle Dapper null değerini döndürmesidir. –