I have a 미드 콘테스트 인할지 아카스 레이어에는 분판된 데이터 클래스 라이브러리 프로젝트. 저는 ASP.NET MVC 프로젝트 함께 한 5 기본 이덴스티드 콘테스트. I want to use 아스파네우저스 사용하여 두 컨텍스트로 같은 데이터베이스, 테이블) 등 주요 일부 내 테이블. 그래서 두 병합하려면 상황, 그리고 싶다 (i want to use ASP.NET 아이디 너무.
How can I do this?
조언 바랍니다.
이건 내 컨텍스트로 병합 후:
public class CrmContext : IdentityDbContext<CrmContext.ApplicationUser> //DbContext
{
public class ApplicationUser : IdentityUser
{
public Int16 Area { get; set; }
public bool Holiday { get; set; }
public bool CanBePublic { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
public CrmContext()
: base("DefaultConnection")
{
}
public DbSet<Case> Case { get; set; }
public DbSet<CaseLog> CaseLog { get; set; }
public DbSet<Comment> Comment { get; set; }
public DbSet<Parameter> Parameter { get; set; }
public DbSet<Sign> Sign { get; set; }
public DbSet<Template> Template { get; set; }
public DbSet<Read> Read { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
이것은 내 레포지토리바제 클래스:
public class RepositoryBase<TContext, TEntity> : IRepositoryBaseAsync<TEntity>, IDisposable
where TContext : IdentityDbContext<CrmContext.ApplicationUser> //DbContext
where TEntity : class
{
private readonly TContext _context;
private readonly IObjectSet<TEntity> _objectSet;
protected TContext Context
{
get { return _context; }
}
public RepositoryBase(TContext context)
{
if (context != null)
{
_context = context;
//Here it is the error:
_objectSet = (_context as IObjectContextAdapter).ObjectContext.CreateObjectSet<TEntity>();
}
else
{
throw new NullReferenceException("Context cannot be null");
}
}
}
추가 정보 *: 세대 모델 중 하나 이상의 검증 오류가 발견되었습니다.
업데이트: 내가 solution.* 찾았습니다.
난 이미 이 지루려면 명명 규칙:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
캐논 ef, 마이그레이션하여 cf 모델, 내 이름을 바꿀 수 있는 테이블을 나메잉 댁꽕 db 의 asp.net 방침이었다. 이는 apc® 지금이예요!
다음 메시지가 나타날 수 있습니다 # 39 위 단계를 따른다면, 얼마나 중요한 정보를 제공할 수 있지만 아웃해야 can& 빗나갔다. 는 오류 받을 수 있습니다.
이덴티티우스를로긴: . # 39, & # 39 렌티티티페 IdentityUserLogin&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페. 콘테스트롬이덴티티우저롤: . # 39, & # 39 렌티티티페 IdentityUserRole&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페.
다음과 같은 두 개의 클래스뿐만 만듭다
public class IdentityUserLoginConfiguration : EntityTypeConfiguration<IdentityUserLogin>
{
public IdentityUserLoginConfiguration()
{
HasKey(iul => iul.UserId);
}
}
public class IdentityUserRoleConfiguration : EntityTypeConfiguration<IdentityUserRole>
{
public IdentityUserRoleConfiguration()
{
HasKey(iur => iur.RoleId);
}
}
위에 있는 두 구성 방법을 데브콘테스트 모모델크레팅 애플리케이션 내에서 추가 모델을:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new IdentityUserLoginConfiguration());
modelBuilder.Configurations.Add(new IdentityUserRoleConfiguration());
}
이제 이러한 오류를 메서드을 폐기할 경우 모델을 만들고 있습니다. Did it for me.
하지만 대부분의 경우, 아마도 that& # 39 의 벌금을 재사용하려는 레이어에는 적합하지 않은 데이터의 경우 다른 응용 프로그램 (예: 데스크탑 또는 서버 애플리케이션 (앱) 이 가 제시하는 것이기 때문에 목숨을 이덴스티드 콘테스트 [마이크로소프트리아스파네자이덴스티그렌티티프라임보크] [1] 네임스페이스이며 바탕 화면 또는 서버 어플리케이션을 사용할 수 AspNet 거의 그들의 정체성을 인증 메커니즘을.
우린 항상 그 상황에서 및 됐지 ASP& # 39 의 두 번째 DB 컨텍스트로, 여기에는 삼백년에 웹 프로젝트. 그런 다음 금지커서 로드됨 일부 데이터에 대한 사용자 (성명, etc.) 를 identity& # 39 의 청구용 객체에는 사용자가 로그인되었습니다.
[1]: https://docs.microsoft.com/en-us/previous-versions/aspnet/dn253028%28v% 3Dvs.108%29
하지만 이 문서에서는 이 늙은 스레드할 수 있는 방법을 보여주는 것은 아주 도움됐네 내려받습니다 솔루션이므로 위 질문에 작업: http://blogs.msdn.com/b/webdev/archive/2014/03/20/test-announcing-rtm-of-asp-net-identity-2-0-0.aspx
I did 및끝 포함시키십시오 필요
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//....
}
그것 없이는 얻을 수 있기 때문에, 난 다음 오류: >. # 39, & # 39 렌티티티페 IdentityUserRole&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페.
만약 내가 이러한 구성에 앞서 언급한 대로 추가:
public class IdentityUserLoginConfiguration : EntityTypeConfiguration<IdentityUserLogin>
{
public IdentityUserLoginConfiguration()
{
HasKey(iul => iul.UserId);
}
}
public class IdentityUserRoleConfiguration : EntityTypeConfiguration<IdentityUserRole>
{
public IdentityUserRoleConfiguration()
{
HasKey(iur => iur.RoleId);
}
}
외래 키 호출됨 Application_User 추가로 만들 수 있지 않을까 생각한다 "고 말했다.
에서 상속됩니다 후에는 컨텍스트로 IdentityDbContext< ApplicationUser>; 기본 키 아이디 테이블 (아스파네우저스 등) 에 관련된 오류뿐만 사라지게 한다.
로 해석되는 alphastor 너회의 아프리카션우저 이덴티티우저 누락되었습니다. 이동줄에 특성는 엔티티입니다 프레임워크입니다 의해 외래 키 (이 역시 매우 유용합니다 이동줄에 코드에서).
public class ApplicationUser : IdentityUser
{
public Int16 Area { get; set; }
public bool Holiday { get; set; }
public bool CanBePublic { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
//*** Add the following for each table that relates to ApplicationUser (here 1-to-many)
public virtual IList<Case> Cases { get; set; } //Navigation property
//*** and inside the case class you should have
//*** both a public ApplicationUser ApplicationUser {get;set;}
//*** and a public string ApplicationUserId {get;set;} (string because they use GUID not int)
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//....
}
그러나 나는 이 질문의 답을 완료하십시오 here. 다음은 파선-짧은 대답:
우리는 우리가 원하는 경우 emc 의 소스 코드를 기반으로 이덴스티드 콘테스트 이덴스티드 콘테스트 병합하려면 데브콘테스트 options:< br> < br>, 2,,
public class ApplicationDbContext
: IdentityDbContext
{
public ApplicationDbContext()
: base("DefaultConnection")
{
}
static ApplicationDbContext()
{
Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
// Add additional items here as needed
}
, &Lt br> Option:* ss+sp 아닌 권장됨). 실제로 쓸 수 없는 상속됩니다 이덴스티드 콘테스트 don& # 39, 만약 우리가 모든 코드 어디 있겠습니까? < br>; 그래서 기본적으로 우리는 우리의 사용자정의된 버전니다 " 모모델크레팅 상속됩니다 데브콘테스트 및 구현하십시오 됩니다. (모델베이더 구성기는) "; 2 의 [이덴스티드 콘테스트 소스 코드]
문제가 발생할 수 있기 때문에 덮어 컨텐트에서 메서드입니다 " OnModelCreating"; 이덴티티우저 구현되어 있는 클래스.
기본 클래스 메서드를 호출할 수 있는 첫 번째, 그리고 그 이후로 모모델크레팅 필요한 추가 코드에. 그래서 방법을 모모델크레팅 다음과 같습니다.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}