繁体   English   中英

设置PK使用EF6流利API进行聚类

[英]Setting PK is clustered using EF6 fluent api

困扰我的是,我必须使用迁移将主键设置为不集群,但无法使用流畅的API进行设置。

是否有任何方法/技巧来扩展fluent API以支持设置主键IsClustered属性,从而在添加迁移时生成的C#代码也显示正确的实现?

对于EF 7,它变得很容易。 您可以将以下选项与haskey选项一起使用。

ForSqlServerIsClustered(false); 

我们可以像这样使用它

supplierItemEntity.HasKey(supplierItem => supplierItem.SupplierItemId).ForSqlServerIsClustered(false);

 supplierItemEntity.HasIndex(s => new { s.ItemId }).ForSqlServerIsClustered(true).HasName("IX_SupplierItem_ItemId");

在此处输入图片说明

流利的API主要针对映射 ,而不是数据库设计。 我认为应该保持这种状态。 API不应混合考虑。 有关聚簇索引的规则不属于映射API。 索引是否聚簇与映射无关。 此外,关于聚簇索引的规则是特定于数据库的,因此只能在Provider中实现。 但是,映射API不知道任何提供程序。

我个人认为,即使IndexAttribute (在EF 6.1中引入)也是一种不明智的折衷。 (尽管显然,这是将外键关联映射到唯一索引的先决条件,但EF7 会支持 )。

相反,尽管EF还需要知道实体的主键,但HasKey方法也HasKey ,尽管它也深深地涉及数据库设计规则。 它在所有CRUD动作中都至关重要。 “主键”是所有RDBMS供应商共享的概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM