.net - 在 EF Core 映射上添加唯一索引似乎不起作用
问题描述
我们在我们的 ASP.NET 核心 API 解决方案中使用 EF Core。数据库中有一个事务表,并且有一个包含两列的唯一索引。因此,此表中不应该有这些列具有相同值的记录。
在我们的 EF 映射中,我们有这个
builder.HasIndex(e => new { e.RsaSessionId, e.SessionId }).IsUnique(true).HasName("IX_Transactions");
builder.Property(e => e.RsaSessionId)
.HasColumnName(nameof(Transaction.RsaSessionId))
.IsRequired();
builder.Property(e => e.SessionId)
.HasColumnName(nameof(Transaction.SessionId))
.IsRequired()
.HasColumnType("uniqueidentifier");
但是在我们使用内存数据库提供程序的集成测试中,当在 DbContext 的 Transactions DbSet 中添加两个相同的事务对象时,不会引发错误。这段代码不应该引发错误吗,因为我们已经指定了包含这两列的唯一键?
var rsaSessionID=1;
Guid issuerSessionId=Guid.NewGuid();
//create two transactions with the same values for the two fields in the unique index
var transaction = new Transaction(rsaSessionID, issuerSessionId, ... other fields ... );
var transaction = new Transaction(rsaSessionID, issuerSessionId, ... other fields ... );
this.fixture.Context.Transactions.Add(transaction);
this.fixture.Context.Transactions.Add(transaction2);
this.fixture.Context.SaveChanges();
任何帮助是极大的赞赏。
解决方案
推荐阅读
- c# - [全文搜索]实现全文搜索
- r - 将 %in% 的结果制成表格
- apache-kafka - 如何记录 Kafka 主题访问
- ssh - 用于在远程服务器 linux 中解压缩文件的天蓝色 SSH 任务
- javascript - 动态更新内容(例如单击按钮更新 div)并更新网站上的 url 而无需刷新,然后在手动刷新时保持在同一页面上
- angular - 清晰度组件上的内容投影
- python-3.x - 使用 zipapp 安装以前发布的 virtualenv
- javascript - 显示带有来自strapi的反应的图像
- gradle - Gradle 中是否共享子依赖项?
- python - 是否可以每次在 tkinter 中调用一个函数?