2017-01-03 64 views
2

我的實體有一個允許爲空的屬性。但是,如果它不是空的,那麼它必須是唯一的。換句話說,該列是唯一的,但允許多個空值。EF Core是否允許一個獨特的列包含多個空值?

我已經試過:

config.Property(p => p.ProductId).IsRequired(false); 

我記得我努力讓這對前核心EF工作。

這可能嗎?我如何配置實體?

回答

3

是的,你可以做到這一點與EF核心,因爲默認情況下唯一索引作爲篩選的索引創建(WHERE ... IS NOT NULL)

config.Entity<Product>() 
     .HasIndex(b => b.ProductId) 
     .IsUnique(); 

https://github.com/aspnet/EntityFramework/pull/2868

+0

我想這是對於SQL Server - 你知道它是否也被SQLite支持? 「過濾索引」似乎是一個MS事情? – grokky

+0

我在EF Core 1.0.2上,這似乎不適合我? modelBuilder.Entity(「DataModel.Models.Employee」,b => {b.HasIndex(「FingerprintId」)。IsUnique();});仍然得到'SqlException:無法在具有唯一索引'IX_Employees_FingerprintId'的對象'dbo.Employees'中插入重複鍵行。重複的鍵值是().' – Lawrence

+0

@勞倫斯它適用於我1.1.0 – grokky

相關問題