我正在使用自动创建的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和系统架构的数据库
仅使用dbo架构的数据库
答案 0 :(得分:1)
我不知道你遇到的确切问题,但如果数据库中没有表格,它当然不会返回任何内容。如果要更好地选择所有模式,请使用:
SELECT schema_id, name FROM sys.schemas