从SQL Server检索所有值作为字符串

时间:2012-04-23 05:27:27

标签: c# sql sql-server entity-framework entity-framework-4.1

我目前正在使用EF Code-First,我想从数据库中的许多表中SELECT数据。此查询是一个可自定义的查询,因此我无法预测将检索哪种数据。

首先,当我尝试运行ctx.Database.SqlQuery<string>(sql, param)时,遇到DateTime值时遇到异常。我想这样做而不在服务器端投射它。

有人知道我该怎么做吗?它可以是LINQ,LINQ-SQL或纯SQL - 只要它完成工作!谢谢你们......

3 个答案:

答案 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()
   });