我目前正在使用EF Code-First,我想从数据库中的许多表中SELECT
数据。此查询是一个可自定义的查询,因此我无法预测将检索哪种数据。
首先,当我尝试运行ctx.Database.SqlQuery<string>(sql, param)
时,遇到DateTime
值时遇到异常。我想这样做而不在服务器端投射它。
有人知道我该怎么做吗?它可以是LINQ,LINQ-SQL或纯SQL - 只要它完成工作!谢谢你们......
答案 0 :(得分:1)
你不会得到它。 Linq-to-entities不会转换为字符串列表。您最好的机会是执行常规查询并转换和转换您的应用程序。
您不知道用户选择哪些列的参数意味着您需要更多动态解决方案 - Linq-to-entities对您来说不是一个好工具(除非您尝试使用Dynamic Linq或手动构建表达式树)。直接使用ESQL或SQL。
答案 1 :(得分:0)
从许多表中选择数据时,使用anonymous types将要从这些表中选择的属性(字段)封装到新实体中,如:
var query = _db.Categories.Join(
_db.Products,
c => c.CategoryId,
p => p.CategoryId,
(category, product) =>
new
{
ProductName = product.Name,
CategoryName = category.Name,
ExpiryDate = product.ExpiryDate
});
答案 2 :(得分:0)
您可以通过以这种方式将数据字段转换为字符串来实现字符串值:
var query = _db.Categories.Join(
_db.Products,
c => c.CategoryId,
p => p.CategoryId,
(category, product) =>
new
{
ProductName = product.Name.toString(),
CategoryName = category.Name.toString(),
ExpiryDate = product.ExpiryDate.toString()
});