我正在尝试使用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();
原文地址:https://codeday.me/bug/20190622/1263485.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。