Linq to sql 表间关系查询问题

cfanshappy 2013-07-24 06:27:21
代码如下:
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);
}
}
}
求解,问题出在哪里?
...全文
8444 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看错,那是Order的 你还是用VS生成代码,然后将你自定义的东西用partial写个部分类放在单独的cs文件里吧,这样好维护点 如果只是加一些查询方法,你可以写成扩展方法
  • 打赏
  • 举报
回复
[Association(ThisKey = "CustID", OtherKey = "CustID", IsForeignKey = true, Name = "FK_Orders_CustID")] public [color=#000000]Customer Customers[/color] { 上面就是一个Customer,不是集合,你就这样查? IQueryable<Customer> query = from c in lContext.Customers select c;
cfanshappy 2013-07-25
  • 打赏
  • 举报
回复
我写的是自定义实体类
EnForGrass 2013-07-24
  • 打赏
  • 举报
回复
通常是因为Model文件中相关表的字段类型和数据库对应表的字段类型不一致引起的。 二、处理办法: 1)检查Model文件(.dbml)中相关表的字段属性中的“Server Data Type“属性值是否和数据库字段类型一致,不一致则根据数据库字段类型修改; 2)检查Model文件(.dbml)中相关表的字段属性中的“Type“属性值是否和数据库字段类型匹配,不匹配则根据数据库字段类型修改。 另外,可以根据异常的StackTrace信息中关于数据类型的描述缩小字段范围。

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧