Linq to sql 表间关系查询问题
代码如下:
public class LINQL2SContext : DataContext
{
public static readonly string sqlConnString = "Data Source=127.0.0.1;Initial CataLog=DB_LinqData;Uid=sa;Pwd=123456";
public LINQL2SContext()
: base(sqlConnString) { }
public Table<Customer> Customers
{
get { return GetTable<Customer>(); }
}
public Table<Order> Orders
{
get { return GetTable<Order>(); }
}
}
会员类
[Table(Name = "TB_Customer")]
public class Customer
{
[Column(IsPrimaryKey = true, Name = "CustID", IsDbGenerated = true)]
public int CustID { get; set; }
[Column(Name = "CustSN")]
public string CustSN { get; set; }
[Column(Name = "CustName")]
public string CustName { get; set; }
[Column(Name = "Gender")]
public bool Gender { get; set; }
[Column(Name = "Telephone")]
public string Telephone { get; set; }
public EntitySet<Order> _orders;
/// <summary>
/// 设置关联的订单
/// </summary>
[Association(OtherKey = "CustID")]
public EntitySet<Order> Orders
{
get { return _orders; }
set
{
_orders.Assign(value);
}
}
}
订单类
[Table(Name = "TB_Orders")]
public class Order
{
[Column(Name = "OrderID", IsPrimaryKey = true, IsDbGenerated = true)]
public int OrderID { get; set; }
[Column(Name = "OrderSN")]
public string OrderSN { get; set; }
[Column(Name = "OrderDate")]
public DateTime OrderDate { get; set; }
[Column(Name = "Price")]
public double Price { get; set; }
[Column(Name = "CustID")]
public int CustID { get; set; }
public EntityRef<Customer> _customers;
/// <summary>
/// 设置关联的订单
/// </summary>
[Association(ThisKey = "CustID", OtherKey = "CustID", IsForeignKey = true, Name = "FK_Orders_CustID")]
public Customer Customers
{
get { return _customers.Entity; }
set
{
_customers.Entity = value;
}
}
执行方法
private static void Test()
{
var lContext = new LINQL2SContext();
DataLoadOptions dQuery = new DataLoadOptions();
dQuery.LoadWith<Customer>(ct => ct.Orders);
lContext.LoadOptions = dQuery;
IQueryable<Customer> query = from c in lContext.Customers select c;
foreach (var item in query)//执行此句提示“Specified cast is not valid.”
{
foreach (var vo in item.Orders)
{
Console.WriteLine("会员名:{0} 订单号:{2} 价格:{1}\n", item.CustName, vo.Price, vo.OrderSN);
}
}
}
求解,问题出在哪里?