Я использую ado .net в своем веб-API и dapper, и у меня есть функция, которая проверяет заказы и строки заказа, он работает нормально, если только один заказ, но если есть заказ без строк заказа, он не будет отображатьдетали заказа.
public IHttpActionResult Get()
{
string retJson;
string constring = ConfigurationManager.AppSettings["DeliveryGocs"].ToString();
string sql = "SELECT * FROM Deliverys AS A INNER JOIN DeliveryLines AS B ON A.id = B.DeliveryId;";
using (var connection = new SqlConnection(constring))
{
var orderDictionary = new Dictionary<int, DeliverysItems>();
var list = connection.Query<DeliverysItems, DeliverItemLines, DeliverysItems>(
sql,
(order, orderDetail) =>
{
DeliverysItems orderEntry;
if (!orderDictionary.TryGetValue(order.id, out derEntry))
{
orderEntry = order;
orderEntry.DeliveryLines = new List<DeliverItemLines>();
orderDictionary.Add(orderEntry.id, orderEntry);
}
orderEntry.DeliveryLines.ad(orderDetail);
return orderEntry;
})
.Distinct()
.ToList();
retJson = JsonConvert.SerializeObject(list);
var response = this.Request.CreateResponse(HttpStatusCode.OK);
response.Content = new StringContent(retJson, Encoding.UTF8, "application/json");
return ResponseMessage(response);
}
}
Класс для элементов доставки
public class DeliverysItems
{
[Key]
public int id { get; set; }
public string SopOrderNumber { get; set; }
public string CustomerName { get; set; }
public int DeliveryDriverId { get; set; }
public decimal OrderTotal { get; set; }
public string TelephoneNumber { get; set; }
public string EmailAddress { get; set; }
public int hasBeenDelivered { get; set; }
public List<DeliverItemLines> DeliveryLines { get; set; }
}
Класс для линий доставки.
public class DeliverysItems
{
[Key]
public int id { get; set; }
public string SopOrderNumber { get; set; }
public string CustomerName { get; set; }
public int DeliveryDriverId { get; set; }
public decimal OrderTotal { get; set; }
public string TelephoneNumber { get; set; }
public string EmailAddress { get; set; }
public int hasBeenDelivered { get; set; }
public List<DeliverItemLines> DeliveryLines { get; set; }
}
}
Мне нужна описанная выше процедура для работы таким образом, чтобыесли в заказе нет строк заказа, он все равно будет отображать верхний колонтитул.Я полагаю, что что-то упустил в моем sql, так как это должно быть легко.
Ибо, как минимум, мое приложение показывает следующее.
Когда это должнопоказывать две записи, которые здесь в данных.