微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – EF你可以使用阴影属性创建一个Mutli列索引吗?

我正在尝试使用shadow属性创建一个多列唯一索引.我知道我可以通过添加一个属性解决这个问题,但我想看看这是否可行,如果不这样做,以保持我的模型干净.

要创建多列索引,您在Fluent API中有以下选项:

modelBuilder.Entity<AlbumTrack>().HasIndex(t => new { t.TrackNumber, t.AlbumId).IsUnique();

但是我不想用额外的AlbumId属性来混淆我的模型,因此想要使用shadow属性,对于单个列,它可以工作:

modelBuilder.Entity<AlbumTrack>().HasIndex(t => EF.Property<int>(t,"AlbumId")).IsUnique();

但对于使用阴影属性的多列索引,如下所示

modelBuilder.Entity<AlbumTrack>()
    .HasIndex(t => new { t.TrackNumber, EF.Property<int>(t,"AlbumId")})
    .IsUnique();

我在vscode中收到以下错误

Invalid anonymous type member declarator. Anonymous type members must be declared with a member assignment, simple name or member access.

任何人都知道如何使用阴影属性这样做或者它是不可能的?

解决方法:

这是可能的.您可以简单地使用带有params string [] propertyNames的HasIndex重载.

首先确保定义了shadow属性

modelBuilder.Entity<AlbumTrack>()
    .Property<int>("AlbumId");

然后定义索引:

modelBuilder.Entity<AlbumTrack>()
    .HasIndex("TrackNumber", "AlbumId")
    .IsUnique();

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐