- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个使用 EF7 的 ASP.NET5 MVC 应用程序。到目前为止一切正常,我能够在数据库中添加迁移和持久数据。现在,在将身份添加到我的数据层项目后,我在尝试添加新迁移时遇到此错误:
The entity type 'Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin' requires a key to be defined
我的上下文来自 IdentityDbContext:
public class ASSWebApiContext : IdentityDbContext<AppUser>
AppUser 类:
using Microsoft.AspNet.Identity.EntityFramework;
using System;
namespace ASS.DomainDataModel.Models
{
public class AppUser : IdentityUser
{
public string AppUserId { get; set; }
public DateTime FirstFlight { get; set; }
}
}
项目.json
{
"version": "1.0.0-*",
"description": "ASS.DomainDataModel Class Library",
"authors": [ "xxxx" ],
"tags": [ "" ],
"projectUrl": "",
"licenseUrl": "",
"frameworks": {
"dnx451": {
"dependencies": {
}
},
"dnxcore50": {
"dependencies": {
}
}
},
"dependencies": {
"ASS.DomainClasses": "1.0.0-*",
"Microsoft.Extensions.PlatformAbstractions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.FileExtensions": "1.0.0-rc1-final",
"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
"EntityFramework.Core": "7.0.0-rc1-final",
"EntityFramework.Commands": "7.0.0-rc1-final",
"EntityFramework.Relational": "7.0.0-rc1-final",
"System.Linq.Expressions": "4.0.11-beta-23516",
"EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final"
},
"commands": {
"ef": "EntityFramework.Commands"
}
}
我在这里所做的就是加载相关的新包:“Microsoft.AspNet.Identity.EntityFramework”:“3.0.0-rc1-final”,添加了 AppUser 类 - 仅此而已。我有一个使用 beta-8 的类似项目,使用完全相同的模式,它在没有问题的情况下工作。 beta-8和rc-1有没有相关的变化?
谢谢!
下面是 ASSWebApiContext 的一部分。大多数具有 DbSet 的实体都有一个 modelBuilder.Entity。所以文件持续了很长一段时间......
using Microsoft.Data.Entity;
using ASS.DomainClasses.Entities;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.PlatformAbstractions;
using System.Linq;
using ASS.DomainClasses.Interfaces;
using System;
using Microsoft.AspNet.Identity.EntityFramework;
namespace ASS.DomainDataModel.Models
{
public class ASSWebApiContext : IdentityDbContext<AppUser>
{
public IConfigurationBuilder Config { get; set; }
public IConfigurationRoot _Configuration { get; private set; }
public ASSWebApiContext(IApplicationEnvironment appEnv)
{
Database.EnsureCreated();
Config = new ConfigurationBuilder()
.SetBasePath(appEnv.ApplicationBasePath)
.AddJsonFile("config.json");
_Configuration = Config.Build();
}
public DbSet<Address> Addresses { get; set; }
public DbSet<AddressType> AddressTypes { get; set; }
public DbSet<Aircraft> Aircrafts { get; set; }
public DbSet<AircraftModel> AircraftModels { get; set; }
public DbSet<AircraftOwner> AircraftOwners { get; set; }
public DbSet<AircraftOwnerType> AircraftOwnerTypes { get; set; }
public DbSet<Country> Countries { get; set; }
public DbSet<GPEncodingType> GPEncodingTypes { get; set; }
public DbSet<LocationPoint> LocationPoints { get; set; }
public DbSet<Manufacturer> Manufacturer { get; set; }
public DbSet<Pilot> Pilots { get; set; }
public DbSet<ServiceProvider> ServiceProviders { get; set; }
public DbSet<State> States { get; set; }
public DbSet<Trip> Trips { get; set; }
public DbSet<Stop> Stops { get; set; }
public DbSet<Track> Tracks { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<AddressType>(
e =>
{
e.Property(n => n.AddressTypeId).IsRequired().UseSqlServerIdentityColumn();
e.Property(n => n.Name).IsRequired().HasMaxLength(15);
e.Ignore(n => n.IsDirty);
});
modelBuilder.Entity<Address>(
e =>
{
e.Property(n => n.AddressId).IsRequired().UseSqlServerIdentityColumn();
e.Property(n => n.AddressTypeId).IsRequired();
e.Property(i => i.CountryId).HasMaxLength(2);
e.Property(i => i.AddrLine1).HasMaxLength(256);
e.Property(i => i.AddrLine2).HasMaxLength(256);
e.Property(i => i.AddrLine3).HasMaxLength(256);
e.Property(i => i.Postcode).HasMaxLength(50);
e.Ignore(n => n.IsDirty);
});
...
最佳答案
基本上,Identity 表的键映射到 IdentityDbContext
的 OnModelCreating
方法中,如果不调用此方法,您最终会得到您得到的错误。如果您从 IdentityDbContext
派生并像您在代码中所做的那样提供您自己的 OnModelCreating
定义,则不会调用此方法。使用此设置,您必须使用 base.OnModelCreating
语句显式调用 IdentityDbContext
的 OnModelCreating
方法。 This answer还讨论了我在此处发布的选项
关于c# - 实体类型 'Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin<string>' 需要定义键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34000091/
这个问题已经有答案了: The entity type 'Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin' requires a
这个问题在这里已经有了答案: The entity type 'Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin' requir
我正在尝试构建一个 asp.net MVC-5 项目 当我突然出现这个错误时 Error 1 'Microsoft.AspNet.Identity.EntityFramework.IdentityUs
所以我有两个上下文,我正在使用 mycontext,但即使 mycontext 继承自 IdentityDbcontext,我也会不断收到错误消息。我尝试了在这里找到的各种修复程序,但都没有用 我在启
我正在使用 Entity Framework Code First 和 MVC 5。当我使用个人用户帐户身份验证创建应用程序时,我获得了一个帐户 Controller 以及所有必需的类和代码,需要使个
我有一个使用 EF7 的 ASP.NET5 MVC 应用程序。到目前为止一切正常,我能够在数据库中添加迁移和持久数据。现在,在将身份添加到我的数据层项目后,我在尝试添加新迁移时遇到此错误: The e
我们的应用程序不需要身份使用的过多“登录”和“声明”功能。如果没有在数据库中创建这些表 simlpy 就好了,但我不想重新实现所有身份类... 我猜是这样的 public ApplicationDbC
我是一名优秀的程序员,十分优秀!