3

我正在构建一个基于 EF 和 Linq.Expression 的请求生成器。我想知道是否有办法通过 EF 中的某处获取列信息。

我正在寻找有关全文索引的信息,您可以在 SQl Server 的属性窗口中看到这些信息。

有人可以帮忙吗?

有关信息,这里是检索表 PitMingTable 的此信息的 T-SQL 请求:

select sc.name, columnproperty(OBJECT_ID('PitMingTable'),sc.name,'IsFulltextIndexed')
from sysobjects so
inner join syscolumns sc on so.id = sc.id
where so.name like 'PitMingTable' and so.xtype ='u'

谢谢。

4

3 回答 3

2

我假设这超出了实体框架的范围,因为它在编译时生成实体数据模型。DBA 可以修改数据库以索引列,而数据模型将无法更新自身以反映这一点。此外,实体框架设计为与数据库无关,并且没有约定在不同的数据库平台之间一致地公开此类元数据。

如果你不介意用一些 SQL 弄脏你的手,你总是可以编写一个存储过程来找出这种事情。这个答案:假设您使用的是 SQL Server ,SQL Server DB 中所有索引和索引列的列表应该给您一个良好的开端。

于 2012-04-20T10:53:32.510 回答
1

不。EF 对查询数据库元数据没有任何本机支持,但您可以获取 SQL 并通过 EF ( ExecuteStoreQuery) 执行它。

于 2012-04-20T10:47:33.017 回答
0

您可以使用您的上下文执行查询。要获取全文索引列表,请使用以下命令:

SELECT * FROM sys.fulltext_indexes

这是描述:sys.fulltext_indexes

如果您不想使用 sql 查询,我认为您可以sys.fulltext_indexes向模型添加视图并使用 EF 使用它。

于 2012-04-20T13:31:18.270 回答