0
我有2個表,我想在結果類中放置一些字段,但我卡住了。我想是這樣的實體框架代碼:NHibernate,連接表和返回特定類型
var res =
(from p in context.EstimationItem
join q in ...
select new EstimationWithDetail
{
Estimation = q.Estimation,
Id = q.Id,
FullName = q.Customer.FirstName + q.Customer.LastName
}).ToList();
在Nibernate,在這個時候,我都這樣了,但我堅持......
var res =
Session.QueryOver<EstimationItem>()
.JoinQueryOver(x => x.Estimation)
.Select(
x => x.Estimation.Reference,
x => x.Estimation.CreationDate,
x => x.Price,
x => x.Estimation.Customer.FirstName,
x => x.Estimation.Customer.LastName
)
.List();
public class Estimation
{
public virtual string Reference { get; set; }
public virtual Customer Customer { get; set; }
public virtual DateTime CreationDate { get; set; }
public virtual decimal Total { get; set; }
public virtual IList<EstimationItem> EstimationItems { get; set; }
}
public class EstimationItem
{
public virtual decimal Price { get; set; }
public virtual int Quantity { get; set; }
public virtual Estimation Estimation { get; set; }
public virtual Product Product { get; set; }
}
public class EstimationWithDetail
{
public string Reference { get; set; } //Estimation.Reference
public string FullName { get; set; } //concat FirstName and LastName from Customer
public decimal Price { get; set; } //Estimation.Total
public int Id { get; set; } //Estimation.Id
public DateTime CreationDate { get; set; } //Estimation.CreationDate
}
更新1
我試過了代碼,但是我得到這個錯誤: InvalidOperarionException,類型'EstimationItem'的變量'x'引用範圍'',但沒有定義
var res =
Session.QueryOver<EstimationItem>()
.JoinQueryOver(x => x.Estimation)
.Select(x => new EstimationWithDetail
{
Code = x.Estimation.Reference,
CreationDate = x.Estimation.CreationDate,
Price = x.Estimation.Total,
FullName = x.Estimation.Customer.FirstName + x.Estimation.Customer.LastName
})
.List<EstimationWithDetail>();
更新2: 我想這太
Estimation a = null;
Customer b = null;
var res = Session.QueryOver<EstimationItem>()
.JoinAlias(c => c.Estimation,() => a)
.JoinAlias(c => c.Estimation.Customer,() => b)
.Select(x => new EstimationWithDetail
{
Code = a.Reference,
Id = a.Id,
FullName = b.LastName
})
.List<EstimationWithDetail>();
我也有這個問題。如果我移動'.Select'到'的.List <...>()'它的工作原理後,但隨後的SQL選擇將選擇所有列,而旗下的J最後,我(我想我們)試圖避免。你有沒有找到解決方案? – Markus