【发布时间】:2020-12-27 09:48:53
【问题描述】:
我正在对国家和城市进行 CRUD,我正在尝试向 City.Name 添加一个唯一索引。
我已经对 Country.Name 这样做了,我想知道是否可以对一个城市这样做,以便 2 个国家/地区的 2 个城市可以使用相同的名称,但在 1 个国家/地区不能有任何城市使用重复的名字。
国家级
public int Id { get; set; }
[Required]
public string Name { get; set; }
public ICollection<City> Cities { get; set; }
城市类
public int Id { get; set; }
[Required]
public string Name { get; set; }
当我创建一个城市时,我正在使用这个 ViewModel
城市视图模型
public int CountryId { get; set; }
public int CityId { get; set; }
[Required]
public string Name { get; set; }
OnModelCreating
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Country>().HasIndex(c => c.Name).IsUnique();
base.OnModelCreating(modelBuilder);
}
示例
假设我有 2 个国家加拿大和澳大利亚,在加拿大境内我有 1 个城市,名为悉尼。
如果我尝试创建或编辑另一个国家/地区以将其命名为加拿大或澳大利亚,我希望它给出错误。
如果我尝试创建或编辑另一个城市,将其命名为悉尼,如果该城市是在澳大利亚国家/地区创建的,则不应出现错误,但如果它是在加拿大国家/地区创建的,则应出现错误。
希望对你有帮助。
【问题讨论】:
-
您能否举例说明您希望允许的数据和不希望允许的数据?
-
@ESG 我提供了一个示例,希望对您有所帮助。
标签: c# asp.net-core entity-framework-core