Тип сущности «Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin» требует определения ключа.C#

Место общения программистов C#
Anonymous
Тип сущности «Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin» требует определения ключа.

Сообщение Anonymous »

У меня есть приложение ASP.NET5 MVC, использующее EF7. Пока все работает нормально, и я могу добавлять миграции и сохранять данные в базе данных.
Теперь, после добавления Identity в мой проект уровня данных, я получаю эту ошибку при попытке добавить новую миграцию:


Тип объекта
'Microsoft.AspNet.Identity.EntityFramework.IdentityUserLogin'
требует определения ключа


Мой контекст получен из IdentityDbContext:

public class ASSWebApiContext : IdentityDbContext


класс 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; }
}
}


project.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 - ничего больше. У меня был аналогичный проект с использованием бета-8 и точно такой же схемы, где он работал без проблем. Есть ли какие-либо существенные изменения между бета-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
{
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 Addresses { get; set; }
public DbSet AddressTypes { get; set; }
public DbSet Aircrafts { get; set; }
public DbSet AircraftModels { get; set; }
public DbSet AircraftOwners { get; set; }
public DbSet AircraftOwnerTypes { get; set; }
public DbSet Countries { get; set; }
public DbSet GPEncodingTypes { get; set; }
public DbSet LocationPoints { get; set; }
public DbSet Manufacturer { get; set; }
public DbSet Pilots { get; set; }
public DbSet ServiceProviders { get; set; }
public DbSet States { get; set; }
public DbSet Trips { get; set; }
public DbSet Stops { get; set; }
public DbSet Tracks { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{

modelBuilder.Entity(
e =>
{
e.Property(n => n.AddressTypeId).IsRequired().UseSqlServerIdentityColumn();
e.Property(n => n.Name).IsRequired().HasMaxLength(15);
e.Ignore(n => n.IsDirty);
});

modelBuilder.Entity(
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);
});
...


Подробнее здесь: https://stackoverflow.com/questions/340 ... erloginstr

Вернуться в «C#»