在唯一属性创建时主键异常
本文关键字:异常 创建 唯一 属性 | 更新日期: 2023-09-27 18:14:23
我正在用Asp.net core和EF core构建一个应用程序。我在执行代码第一概念时得到以下异常。
System.Reflection。CustomAttributeData'需要一个主键定义。
这只发生在我在DBContext类中用isUnique
定义modelbuilder
时。如果我注释掉整个modelbuilder
,一切工作正常。它创建数据库和表没有任何问题。
下面是我的 Modelbuilder
:
protected override void OnModelCreating(ModelBuilder modelbuilder)
{
// Make unique properties
modelbuilder.Entity<Application>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<Domain>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<Roles>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<Environments>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<NetworkZone>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<Status>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<Type>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<OperatingSystems>()
.HasIndex(a => a.OSVersion)
.IsUnique();
modelbuilder.Entity<Servers>()
.HasIndex(s => s.ServerName)
.IsUnique();
modelbuilder.Entity<ResourceGroup>()
.HasIndex(a => a.Name)
.IsUnique();
modelbuilder.Entity<AccessType>()
.HasIndex(a => a.Name)
.IsUnique();
}
这是我在所有模型中继承的entity base
类。
public abstract class EntityBase
{
/// <summary>
/// Gets or sets the identifier.
/// </summary>
/// <value>
/// The identifier.
/// </value>
[Key]
public int Id { get; set; }
/// <summary>
/// Gets or sets the created by.
/// </summary>
/// <value>
/// The created by.
/// </value>
public string CreatedBy { get; set; }
/// <summary>
/// Gets or sets the create on.
/// </summary>
/// <value>
/// The create on.
/// </value>
public DateTime CreatedOn { get; set; }
/// <summary>
/// Gets or sets the modified by.
/// </summary>
/// <value>
/// The modified by.
/// </value>
public string ModifiedBy { get; set; }
/// <summary>
/// Gets or sets the modified on.
/// </summary>
/// <value>
/// The modified on.
/// </value>
public DateTime ModifiedOn { get; set; }
}
我通过更改下面的模型生成器来纠正实体来修复它。
来自:modelbuilder.Entity<Type>()
.HasIndex(a => a.Name)
.IsUnique();
:
modelbuilder.Entity<Types>()
.HasIndex(a => a.Name)
.IsUnique();
Type
被系统使用,所以在我的modelbuilder
中有一个错字