我有以下查询,使用 Simple.Data.SqlServer 中的 Join 语句从数据库中读取记录。
var productLineItem = (ProductLineItem) (database.Products.All()
.Select(
database.Products.Name,
database.Products.Price
)
.Join(database.BarCodes)
.On(database.BarCodes.ProductID == database.Products.ID)
.Where(database.BarCodes.BarCode == barCode).FirstOrDefault())
请注意我必须如何使用 FirstOrDefault 方法以及如何将整个语句包装到括号中,然后将其转换为一个对象。我不喜欢这样。我觉得Simple.Data应该可以像下面的代码那样工作
ProductLineItemproductLineItem = database.Products.Get()
.Select(
database.Products.Name,
database.Products.Price
)
.Join(database.BarCodes)
.On(database.BarCodes.ProductID == database.Products.ID)
.Where(database.BarCodes.BarCode == barCode);
在上面的示例中,我使用了 Get,因为我知道我只会获取一条记录,而不是记录列表,但此查询不起作用。
如何使用 Simple.Data 预加载查询而不使用那些丑陋的方法来实现我想要的?
最佳答案
我不确定您理想中想要的东西是否可能,但有一个 Cast()
您至少可以使用 Linq 方法以函数式风格继续查询并删除您不喜欢的括号:
var productLineItem = database.Products
.All()
.Select(database.Products.Name, database.Products.Price)
.Join(database.BarCodes)
.On(database.BarCodes.ProductID == database.Products.ID)
.Where(database.BarCodes.BarCode == barCode)
.Cast<ProductLineItem>()
.FirstOrDefault();
关于c# - 将 Simple.Data.Query 转换为 POCO 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469426/