Entity Framework 6.1(代码优先)通过IndexAttribute增加了添加索引的可能性。该属性带有一个参数,用于指定索引是聚集还是非聚集。
同时,据我所知,Entity Framework要求每个实体都必须有一个主键(用KeyAttribute注释),并且该主键总是创建为聚集键。
因此,一旦我应用了IsClustered = true的IndexAttribute,就会出现错误,因为由于键已经存在聚集索引。
那么,如何使用IndexAttribute创建非主键的聚集索引呢? IndexAttribute的IsClustered属性是否可用?
(为了更好地理解:我正在映射一个仅用于通过LINQ查询进行读取的表。我不需要从该表中实际插入、更新或删除实体。因此,我根本不需要主键。理想情况下,我希望有一个没有主键但具有针对读取进行优化的非唯一聚集索引的表。)
同时,据我所知,Entity Framework要求每个实体都必须有一个主键(用KeyAttribute注释),并且该主键总是创建为聚集键。
因此,一旦我应用了IsClustered = true的IndexAttribute,就会出现错误,因为由于键已经存在聚集索引。
那么,如何使用IndexAttribute创建非主键的聚集索引呢? IndexAttribute的IsClustered属性是否可用?
(为了更好地理解:我正在映射一个仅用于通过LINQ查询进行读取的表。我不需要从该表中实际插入、更新或删除实体。因此,我根本不需要主键。理想情况下,我希望有一个没有主键但具有针对读取进行优化的非唯一聚集索引的表。)
编辑(2014-04-11):另请参阅https://entityframework.codeplex.com/workitem/2212。