У меня есть класс вендора, подобный этому:
public class Vendor: DataAccess
{
//properties
public int VEND_ID;
public string VEND_NAME { get; set; }
public string VEND_ADDRESS { get; set; }
public string VEND_PHONE { get; set; }
public string VEND_WEBSITE { get; set; }
public string NOTES { get; set; }
public static string ErrorMessage { get; set; }
//Constructors
public Vendor(string name,string address,string phone,string website,string notes)
{
VEND_NAME = name;
VEND_ADDRESS = address;
VEND_PHONE = phone;
VEND_WEBSITE = website;
NOTES = notes;
}
public Vendor(string name)
{
VEND_NAME = name;
}
public Vendor() { }
)
У меня есть класс заказов, подобный этому:
public class Order: DataAccess
{
//properties
public int ORDER_ID { get; set; }
public Vendor VENDOR_ID { get; set; }
public string ENTRY_DATE { get; set; }
public string ORDER_NO { get; set; }
public string TOTAL_COST { get; set; }
public string STATUS { get; set; }
public string NOTES { get; set; }
public string ATTACH_ID { get; set; }
public static string ErrorMessage { get; set; }
//constructors
//public Order(string )
}
Мой класс доступа к данным имеет следующий метод:
public Tuple<List<Vendor>, List<Order>> GetVendorByName(string name)
{
using (IDbConnection connection = new System.Data.SqlClient.SqlConnection(Helper.CnnVal("TESTDB")))
{
using (var multi = connection.QueryMultiple("dbo.GetVendor_ByName", new { VEND_NAME = name }))
{
List<Vendor> vd=new List<Vendor>();
vd.Add(multi.Read<Vendor>().First());
List<Order> od = new List<Order>();
od.Add(multi.Read<Order>().Single());
var output = Tuple.Create(vd, od);
return output;
}
//var output = connection.QueryMultiple<Vendor>("dbo.GetVendor_ByName", new { VEND_NAME = name }).ToList();
}
}
Основной класс использует его следующим образом:
List<Vendor> vendor = new List<Vendor>();
private void _search_Click(object sender, EventArgs e)
{
Vendor db = new Vendor(cb_vendor.Text);
vendor=db.GetVendorByName(cb_vendor.Text);//This is where the error is pointed at
//dgv_data.Refresh();
dgv_data.DataSource = vendor;
}
Я пытаюсь получить данные из процедуры SQL для отображения в DataGridView (dgv_data). Между Продавцом и Порядком существует связь один ко многим. Я хочу получить все Заказы для любого выбранного имени Продавца
Я знаю, что проблема в том, что я возвращаю Список. Я пытался использовать Tuples, но без радости, это дает мне ошибку о неявных преобразованиях. Любая идея, как сделать то, что я пытаюсь сделать sh?
Ошибка CS0029 Невозможно неявно преобразовать тип 'System.Tuple, System.Collections.Generi c .List>' в 'System.Collections.Generi c .List' PurchaseApp
Update1:
Хранимая процедура выглядит следующим образом:
ALTER proc [dbo].[GetVendor_ByName]
(
@VEND_NAME varchar(100)
)
as
Select Distinct a.VEND_NAME,b.* from dbo.Purch_Vendor a left join purch_order b on a.vendor_id=b.vendor_id where a.Vend_Name=@VEND_NAME