我有两张桌子。列为customerid、invoicedate、value、invoicetypeid(customerid和invoicedate组成组合键)的发票,列为invoicetypeid和invoicetypename的发票。
我知道我可以创建我的对象,比如:
public class Invoice
{
public virtual int CustomerID { get; set; }
public virtual DateTime InvoiceDate { get; set; }
public virtual decimal Value { get; set; }
public virtual InvoiceType InvoiceType { get; set; }
}
public class InvoiceType
{
public virtual InvoiceTypeID { get; set; }
public virtual InvoiceTypeName { get; set; }
}
因此生成的sql看起来像:
SELECT CustomerID, InvoiceDate, Value, InvoiceTypeID FROM Invoice WHERE CustomerID = x AND InvoiceDate = y
SELECT InvoiceTypeID, InvoiceTypeName FROM InvoiceType WHERE InvoiceTypeID = z
但是,如果执行两个select查询来检索数据,我宁愿使用一个查询。我还想避免使用子对象进行简单的查找列表。所以我的东西看起来像:
public class Invoice
{
public virtual int CustomerID { get; set; }
public virtual DateTime InvoiceDate { get; set; }
public virtual decimal Value { get; set; }
public virtual InvoiceTypeID { get; set; }
public virtual InvoiceTypeName { get; set; }
}
我的sql看起来像:
SELECT CustomerID, InvoiceDate, Value, InvoiceTypeID
FROM Invoice INNER JOIN InvoiceType ON Invoice.InvoiceTypeID = InvoiceType.InvoiceTypeID
WHERE CustomerID = x AND InvoiceDate = y
我的问题是如何创建这个映射?
我尝试过使用join,但这尝试过使用customerid和invoicedate进行连接,我是否遗漏了一些明显的东西?
谢谢