Asp.net core 找不到属性';Identity.User.LockoutEnd';使用CLR类型';可为空<;DateTimeOffset>';
我想创建一个迁移,以便在数据库中创建一个新表,但在执行Asp.net core 找不到属性';Identity.User.LockoutEnd';使用CLR类型';可为空<;DateTimeOffset>';,asp.net-core,entity-framework-core,entity-framework-migrations,asp.net-core-3.1,ef-code-first-mapping,Asp.net Core,Entity Framework Core,Entity Framework Migrations,Asp.net Core 3.1,Ef Code First Mapping,我想创建一个迁移,以便在数据库中创建一个新表,但在执行添加迁移MsSql\u Add\u articleCography\u table后,出现以下错误: 找不到属性的关系类型映射 CLR类型为“Alpha.Models.Identity.User.LockoutEnd” “可为空” 我如何解决它(我在项目中使用了asp.net core 3.1)? PM>添加迁移MsSql\u添加\u ArticleCategory\u表生成已开始。。。 构建成功。Microsoft.EntityFramew
添加迁移MsSql\u Add\u articleCography\u table
后,出现以下错误:
找不到属性的关系类型映射
CLR类型为“Alpha.Models.Identity.User.LockoutEnd”
“可为空”
我如何解决它(我在项目中使用了asp.net core 3.1)?
PM>添加迁移MsSql\u添加\u ArticleCategory\u表生成已开始。。。
构建成功。Microsoft.EntityFrameworkCore.Model.Validation[30000]
未为实体类型“Article”上的十进制列“RateCounter”指定类型。这将导致值被静默截断
如果它们不符合默认的精度和比例。明确地
指定可容纳所有值的SQL server列类型
使用“HasColumnType()”。
Microsoft.EntityFrameworkCore.Model.Validation[30000]
未为实体类型“Rating”上的十进制列“Rate”指定类型。这将导致值在以下情况下被静默截断:
不适合默认的精度和比例。显式指定
SQL server列类型,可以使用
“HasColumnType()”。Microsoft.EntityFrameworkCore.Infrastructure[10403]
实体框架核心3.1.3使用提供程序“Microsoft.EntityFrameworkCore.SqlServer”初始化了“ApplicationDbContext”,选项如下:
MigrationAssembly=Alpha.DataAccess System.InvalidOperationException:
找不到属性的关系类型映射
CLR类型为“Alpha.Models.Identity.User.LockoutEnd”
“可为空”。在
Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingSourceExtensions.GetMapping(IRelationalTypeMappingSource
typeMappingSource,IProperty属性)位于
Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDifference.Diff(IProperty
源,IProperty目标,DiffContext DiffContext)+MoveNext()位于
Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationModelDifference.DiffCollection[T](IEnumerable1
源,IEnumerable
1目标,DiffContext DiffContext,Func4 diff,
Func
3添加,Func3删除,Func
4[]谓词)+MoveNext()在
System.Linq.Enumerable.ConcatIterator1.MoveNext()位于
Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDifference.Diff(TableMapping
源,TableMapping目标,DiffContext DiffContext)+MoveNext()位于
Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationModelDifference.DiffCollection[T](IEnumerable
1
源,IEnumerable1目标,DiffContext DiffContext,Func
4 diff,
Func3添加,Func3删除,Func4[]谓词)+MoveNext()位于
System.Linq.Enumerable.concaterator
1.MoveNext()位于
Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationModelDifference.Sort(IEnumerable1
操作,DiffContext(DiffContext)
Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDifference.GetDifferences(IModel
来源,IModel目标)位于
Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(字符串
migrationName、字符串根命名空间、字符串子命名空间、字符串
语言)在
Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(字符串
名称、字符串outputDir、字符串contextType)位于
Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(字符串
名称、字符串outputDir、字符串contextType)位于
Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.c__DisplayClass0_0.b_0()
在
Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.c__DisplayClass3_0
1.b__0()
在
Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(操作
操作)找不到属性的关系类型映射
CLR类型为“Alpha.Models.Identity.User.LockoutEnd”
“可为空”。PM>
用户身份模型:
namespace Alpha.Models.Identity
{
public class User : IdentityUser<int>
{
}
}
namespace Microsoft.AspNetCore.Identity
{
public class IdentityUser<TKey> where TKey : IEquatable<TKey>
{
public virtual DateTimeOffset? LockoutEnd { get; set; }
}
}
namespace Alpha.DataAccess
{
public class ApplicationDbContext : IdentityDbContext<User, Role, int, UserClaim, UserRole, UserLogin, RoleClaim, UserToken>
{
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>(builder =>
{
builder.ToTable("User");
});
}
}
}
名称空间Alpha.Models.Identity
{
公共类用户:IdentityUser
{
}
}
命名空间Microsoft.AspNetCore.Identity
{
公共类标识,其中TKey:IEquatable
{
公共虚拟DateTimeOffset?锁定输出{get;set;}
}
}
名称空间Alpha.DataAccess
{
公共类ApplicationDbContext:IdentityDbContext
{
公共应用程序DBContext(DbContextOptions选项):基本(选项)
{
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
基于模型创建(modelBuilder);
实体(生成器=>
{
建造商。可转让(“用户”);
});
}
}
}
您可以添加模型类以查看哪些字段会导致问题吗?我添加了用户模型。奇怪的是,我对类型为System.DateTimeOffset的字段没有问题?
。您是否可以检查您的DateTimeOffset
实际上来自系统
命名空间?可能是您的一个using语句正在拉入另一个默认情况下无法映射的语句。您可以添加模型类以查看哪些字段导致了问题吗?我添加了用户模型。奇怪的是,我对类型为System.DateTimeOffset?
的字段没有问题。您是否可以检查您的DateTimeOffset
实际上来自系统
命名空间?可能是您的一个using语句正在引入另一个默认情况下无法映射的语句。