미드 콘테스트 병합해야 이덴스티드 콘테스트 함께

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");
             }
         }
     }

39, & # 39 System.Data.Entity.ModelConfiguration.ModelValidationException& 유형의 예외가 없었다 ',' 에서 발생한 렌티티프라임워k.들러 처리됩니까 사용자 코드

  • 추가 정보 *: 세대 모델 중 하나 이상의 검증 오류가 발견되었습니다.

  • 업데이트: 내가 solution.* 찾았습니다.

난 이미 이 지루려면 명명 규칙:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}

캐논 ef, 마이그레이션하여 cf 모델, 내 이름을 바꿀 수 있는 테이블을 나메잉 댁꽕 db 의 asp.net 방침이었다. 이는 apc® 지금이예요!

질문에 대한 의견 (6)
해결책
  1. '정의' 아프리카션우저 움직이십시오 데이터베이스에구성원을 달.
  2. 네 ',' 에서 ',' 또는 '이덴스티드 콘테스트 ApplicationUser&gt IdentityDbContext&lt 미드 콘테스트 상속됩니다
  3. 제공하십시오 모모델크레팅 외래 키 정보.
  4. ',', '패스' 미드 콘테스트 만드는 동안 UserManager&lt ApplicationUser&gt
해설 (10)

다음 메시지가 나타날 수 있습니다 # 39 위 단계를 따른다면, 얼마나 중요한 정보를 제공할 수 있지만 아웃해야 can& 빗나갔다. 는 오류 받을 수 있습니다.

이덴티티우스를로긴: . # 39, & # 39 렌티티티페 IdentityUserLogin&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페. 콘테스트롬이덴티티우저롤: . # 39, & # 39 렌티티티페 IdentityUserRole&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페.

다음과 같은 두 개의 클래스뿐만 만듭다

public class IdentityUserLoginConfiguration : EntityTypeConfiguration
{

    public IdentityUserLoginConfiguration()
    {
        HasKey(iul => iul.UserId);
    }

}

public class IdentityUserRoleConfiguration : EntityTypeConfiguration
{

    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.

해설 (2)

39 의 가치가 있는 만큼 it& 경우 공동 데브콘테스츠 병합합니다 틀렸다니까 인증 외곽진입 (ASP& # 39 이 경우, s Identity) 를 데이터 액세스 구현 (EF). 코드 믹싱 (mixing) 에서 디자인 관점으로 해석될 수 있는 행위는 사용자의 관심사와 [단일 책임 원칙] [1].

하지만 대부분의 경우, 아마도 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

해설 (1)

하지만 이 문서에서는 이 늙은 스레드할 수 있는 방법을 보여주는 것은 아주 도움됐네 내려받습니다 솔루션이므로 위 질문에 작업: 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);
     //....
}

그것 없이는 얻을 수 있기 때문에, 난 다음 오류: &gt. # 39, & # 39 렌티티티페 IdentityUserRole&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페.

39, & # 39 렌티티티페 IdentityUserLogin&. 주님으로부터그에게 주요 정의합니다. 주요 엔드입니다 정의하십시오 렌티티티페.

39, & # 39 렌티티스트 IdentityUserRoles&. # 39, & # 39 는 유형에 따라 IdentityUserRole&. 없는 정의된 키.

39, & # 39 렌티티스트 IdentityUserLogins&. # 39, & # 39 는 유형에 따라 IdentityUserLogin&. 없는 정의된 키.

만약 내가 이러한 구성에 앞서 언급한 대로 추가:

public class IdentityUserLoginConfiguration : EntityTypeConfiguration
{
    public IdentityUserLoginConfiguration()
    {
        HasKey(iul => iul.UserId);
    }
}

public class IdentityUserRoleConfiguration : EntityTypeConfiguration
{
    public IdentityUserRoleConfiguration()
    {
        HasKey(iur => iur.RoleId);
    }
}

외래 키 호출됨 Application_User 추가로 만들 수 있지 않을까 생각한다 "고 말했다.

해설 (0)
  1. 에서 상속됩니다 후에는 컨텍스트로 IdentityDbContext&lt ApplicationUser>; 기본 키 아이디 테이블 (아스파네우저스 등) 에 관련된 오류뿐만 사라지게 한다.

  2. 로 해석되는 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 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)
}
  1. I read 오브리딩 모모델크레팅 할 때, 여러 곳에 security. 기본 메서드입니다. 때로는 그것 없이는 할 수 있는 것으로 보인다.
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
         base.OnModelCreating(modelBuilder);
         //....
    }
해설 (0)

그러나 나는 이 질문의 답을 완료하십시오 here. 다음은 파선-짧은 대답:

우리는 우리가 원하는 경우 emc 의 소스 코드를 기반으로 이덴스티드 콘테스트 이덴스티드 콘테스트 병합하려면 데브콘테스트 options:&lt br&gt &lt br&gt, 2,,

  • 최초로 Option:*&lt br>; 충스러웠으니 이덴스티드 콘테스트 액세스할 수 있는 상속됩니다 데브콘테스트 만들기 클래스.
   public class ApplicationDbContext 
    : IdentityDbContext
{
    public ApplicationDbContext()
        : base("DefaultConnection")
    {
    }

    static ApplicationDbContext()
    {
        Database.SetInitializer(new ApplicationDbInitializer());
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }

    // Add additional items here as needed
}

, &Lt br&gt Option:* ss+sp 아닌 권장됨). 실제로 쓸 수 없는 상속됩니다 이덴스티드 콘테스트 don& # 39, 만약 우리가 모든 코드 어디 있겠습니까? &lt br>; 그래서 기본적으로 우리는 우리의 사용자정의된 버전니다 &quot 모모델크레팅 상속됩니다 데브콘테스트 및 구현하십시오 됩니다. (모델베이더 구성기는) "; 2 의 [이덴스티드 콘테스트 소스 코드]

해설 (0)

문제가 발생할 수 있기 때문에 덮어 컨텐트에서 메서드입니다 &quot OnModelCreating"; 이덴티티우저 구현되어 있는 클래스.

기본 클래스 메서드를 호출할 수 있는 첫 번째, 그리고 그 이후로 모모델크레팅 필요한 추가 코드에. 그래서 방법을 모모델크레팅 다음과 같습니다.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
     base.OnModelCreating(modelBuilder);

     modelBuilder.Conventions.Remove();
}
해설 (0)

간단한 방법을 찾았다. 데이터베이스 (db), 연결 문자열을 사용하여 연결 문자열을 복사합니다를 재장착합니다 데포트코네크션. 박으래도 및 사용자 생성, 필요한 모든 테이블을 데이터베이스에서 자동으로 생성됩니다.

도움이 되길 바란다

해설 (0)