当只有一个结果时,ExecuteQuery返回空集合

时间:2015-06-16 07:31:21

标签: c# sql-server linq

我正在使用自动创建的Linq to SQL Classes dbml,我已经手动创建了模型类。它应该从SQL Server中选择所有Schema,当数据库中有多个Schema时,它会正常工作,但是当只有一个结果时,我得到一个空集合。

我也为表和视图提供了相同的模型,这些模型向我展示了相同的行为。

为了获得单一结果我还缺少什么?

代码:

var schemaQuery = "SELECT Distinct
                   SCHEMA_NAME(schema_id) as Name,
                   schema_id as Id
                   from sys.tables 
                   Order by Name"

var context = new DbDataContext();
var schemas = context.ExecuteQuery<Schema>(schemaQuery);

模特课程:

public class Schema
{
    private int _id;
    private string _name;

    [ColumnAttribute(Storage = "_id", DbType = "Int NOT NULL")]
    public int Id
    {
        get
        {
            return _id;
        }
        set
        {
            if (_id != value)
            {
                _id = value;
            }
        }
    }

    [ColumnAttribute(Storage = "_name", DbType = "NVarChar(MAX)")]
    public string Name
    {
        get
        {
            return _name;
        }
        set
        {
            if (_name != value)
            {
                _name = value;
            }
        }
    }
}

结果: 带有dbo和系统架构的数据库

linq to sql results

仅使用dbo架构的数据库

linq to sql no results

1 个答案:

答案 0 :(得分:1)

我不知道你遇到的确切问题,但如果数据库中没有表格,它当然不会返回任何内容。如果要更好地选择所有模式,请使用:

SELECT schema_id, name FROM sys.schemas