C# 从silverlight中的数据库获取表的列名

C# 从silverlight中的数据库获取表的列名,c#,silverlight,linq-to-entities,wcf-ria-services,C#,Silverlight,Linq To Entities,Wcf Ria Services,如何从silverlight应用程序的域服务中的数据库中获取表的列名,然后在列表框中使用这些列名供客户端选择。 我看了看这里,但有点困惑 据我所知,在Silverlight中,你编写域服务来访问服务器端的数据,Silverlight在客户端创建上下文,你在客户端使用上下文。因此,我假设我需要一个datacontext,我在服务器端创建了一个datacontext,它访问相同的数据库,我在方法中使用该上下文作为上面的链接,但是出现类似“System.ArgumentException未由用户代码处

如何从silverlight应用程序的域服务中的数据库中获取表的列名,然后在列表框中使用这些列名供客户端选择。 我看了看这里,但有点困惑

据我所知,在Silverlight中,你编写域服务来访问服务器端的数据,Silverlight在客户端创建上下文,你在客户端使用上下文。因此,我假设我需要一个datacontext,我在服务器端创建了一个datacontext,它访问相同的数据库,我在方法中使用该上下文作为上面的链接,但是出现类似“System.ArgumentException未由用户代码处理”和“Message=关键字不受支持:'元数据'”的异常时,我无法在客户端使用System.Data.Linq,因此我也不能在客户端使用该方法

我是在从LinqToEntitiesDomainService类继承的域服务中编写这个方法的。我真的被困在这一点上了


所有答案将不胜感激。

对此没有内置支持。但是,可以使用以下SQL从表中获取列。在本例中,有一个名为
Foo.Bar
的表,其中
Foo
是模式

SELECT c.name
FROM sys.objects o
JOIN sys.columns c
    ON o.object_id = c.object_id
JOIN sys.schemas s
    ON o.schema_id = s.schema_id
WHERE
    s.name = 'Foo'
    AND o.name = 'Bar'
我使用实体框架
DbContext
来获得结果

var commandText = "<SQL from above>";
var contextAdapter = (IObjectContextAdapter) this;
IEnumerable<string> columnNames = contextAdapter.ObjectContext.ExecuteStoreQuery<string>(commandText);

对此没有内置的支持。但是,可以使用以下SQL从表中获取列。在本例中,有一个名为
Foo.Bar
的表,其中
Foo
是模式

SELECT c.name
FROM sys.objects o
JOIN sys.columns c
    ON o.object_id = c.object_id
JOIN sys.schemas s
    ON o.schema_id = s.schema_id
WHERE
    s.name = 'Foo'
    AND o.name = 'Bar'
我使用实体框架
DbContext
来获得结果

var commandText = "<SQL from above>";
var contextAdapter = (IObjectContextAdapter) this;
IEnumerable<string> columnNames = contextAdapter.ObjectContext.ExecuteStoreQuery<string>(commandText);

当我在寻找答案时,我在这里偶然发现了一些东西。在datacontext类中,我试图直接连接数据库,所以我想我在silverlight中做了一些不应该做的事情。那么ground zero如何使用silverlight中的wcf ria服务从数据库中获取表的列名呢?当我在搜索答案时,我在这里偶然发现了一些东西。在datacontext类中,我试图直接连接数据库,所以我想我在silverlight中做了一些不应该做的事情。那么ground zero如何使用silverlight中的wcf ria服务从数据库中获取表的列名呢?我尝试了。但是我得到了异常“EntityCommandExecutionException”“数据读取器有多个字段。多个字段对EDM基元类型无效。”我尝试了。但是我得到了异常“EntityCommandExecutionException”“数据读取器有多个字段。多个字段对EDM基元类型无效。“