Entity Framework 6 세 번째 수준 자식 테이블에서 첫 번째 일대 다 관계 코드 작성

더쉬

나는이 ApplicationUserASP.NET 정체성 프레임 워크에 의해 만들어진 테이블과 또 다른 테이블 고객을 사용하려는 one-to-one relation. PKApplicationUser테이블은 Id형식 문자열. 그리고 Customer테이블에는 FK문자열 유형이 있습니다. 나는 테이블 Id유형 을 변경할 수 없습니다 ApplicationUser. 그러나 고객 테이블에는 int 유형의 ID (자동 번호) 열이 있어야합니다. 이건 괜찮아.

그리고이 Customer테이블은 테이블 one-to-many과 관계가 Contact있습니다.여기에 이미지 설명 입력

모두 CustomerContact테이블은 고유 ID 열이 Id들. Contact표는이 CustomerId열을. AspNetUser테이블 이 없으면 코드는 먼저 one-to-many이들 idCustomerId열을 사용하여 관계를 생성 합니다. 때문에 AspNetuser표가 one-to-one와의 관계를 Customer,이 사용하지 않습니다 CustomerId. 그러나 코드는 먼저이 관계 (Customer_UserId)를 구축하기 위해 자체 문자열 키 를 생성합니다 one-to-many.

어떻게 사용합니까 Customer관련하는 테이블 열을 Contact테이블에게 CustomerIdEF6 코드 첫 번째 방법을 사용하여 관계를 매핑하는 데 열을?

다음은 완전한 코드입니다.

ApplicationUser

public class ApplicationUser : IdentityUser
{
    //Navigation   properties
    public Customer Customer { get; set; }

    public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
    {
        var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
        return userIdentity;
    }
}

고객

public class Customer
{
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [Index(IsUnique = true)]
    public int Id { get; set; }

    [Key, ForeignKey("ApplicationUser")]
    public string UserId { get; set; }

    public string BusinessName { get; set; }

    //Navigation properties
    [ForeignKey("UserId")]
    public ApplicationUser ApplicationUser { get; set; }
    public virtual ICollection<Contact> Contacts { get; set; }
}

접촉

public class Contact
{
    public int Id { get; set; }
    public int CustomerId { get; set; }

    public string LastName { get; set; }
    public string FirstName { get; set; }
    public string OfficeLocation { get; set; }
    //Navigation properties
    [Required]
    public Customer Customer { get; set; }

}

ApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext(): base("DefaultConnection", throwIfV1Schema: false){}

    static ApplicationDbContext()
    {
        // Set the database intializer which is run once during application start
        // This seeds the database with admin user credentials and admin role
        Database.SetInitializer<ApplicationDbContext>(new ApplicationDbInitializer());
    }

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

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<Customer>()
            .HasRequired(u => u.ApplicationUser).WithRequiredDependent(c => c.Customer);
    }

    public System.Data.Entity.DbSet<WebServer.Models.Customer> Customers { get; set; }

    public System.Data.Entity.DbSet<WebServer.Models.Contact> Contacts { get; set; }
}
더쉬

나는 그것을 알아. ApplicationUserCustomer테이블은 one-to one두 테이블이 동일합니다 PK( String Idin ApplicationUserString UserIdin Customer). 논리적으로 우리는이 두 테이블 PK을 유형이있는 하나의 테이블로 생각할 수 있습니다 string. Contact테이블의 자식 Customer테이블. 따라서 one-to-many간의 관계 CustomerContact. 따라서 Contact테이블에는 Foreign Key문자열 유형 이 있어야 합니다. 따라서 CustomerId모델의은 string대신 int. 또한 코드 우선이 필드를 사용하도록 지시하려면 [ForeignKey("CustomerId")]속성에 public Customer Customer { get; set; }속성 을 추가해야 합니다.

따라서 새 연락처 모델은 다음과 같아야합니다.

public class Contact
{
   public int Id { get; set; }
   public string CustomerId { get; set; }
   public string LastName { get; set; }
   public string FirstName { get; set; }
   public string OfficeLocation { get; set; }

   //Navigation properties

   [ForeignKey("CustomerId")]
   [Required]
   public Customer Customer { get; set; }
}

추신 : 원래 응용 프로그램에서는이 테이블 계층 구조에 다른 수준이 있습니다. 연락처는 많은 주소를 가질 수 있으므로 Address테이블은 s 와 함께 FK유형 int사용 하여 다른 관계 를 형성 할 수 있습니다 .ContactPKone-to-many

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Entity Framework 코드 첫 번째 다 대다 관계가 작동하지 않음

분류에서Dev

Entity Framework 다 대다 관계 수동으로 세 번째 테이블 만들기

분류에서Dev

Entity Framework 코드 첫 번째주기 또는 다중 계단식 경로

분류에서Dev

Entity Framework 코드 첫 번째 관계 저장 문제

분류에서Dev

Entity Framework 코드 첫 번째 선택적 속성이 필수로 매핑 됨

분류에서Dev

Access 양식에서 다 대다 관계의 세 번째 테이블을 어떻게 채울 수 있습니까? (MySQL 백엔드)

분류에서Dev

Entity Framework 6 코드 첫 번째 대소 문자를 구분하지 않는 문자열 연결

분류에서Dev

Entity Framework 6 코드 첫 번째 외래 키 관계를 통한 컬렉션 저장

분류에서Dev

다 대다 관계 테이블 코드 첫 번째 엔터티 프레임 워크에 열 추가

분류에서Dev

Entity Framework 6 코드 첫 번째 트리거

분류에서Dev

EF 코드 첫 번째 다 대다 : 세 번째 테이블의 이름을 지정하고 다른 속성을 추가하는 방법은 무엇입니까?

분류에서Dev

엔티티 프레임 워크 6 코드 첫 번째 일대 다 선택적 관계 제거 하위 문제

분류에서Dev

Entity Framework 코드 첫 번째 GenericTypeArguments

분류에서Dev

Entity Framework 코드 첫 번째 외래 키로 인해 순환 또는 다중 계단식 경로가 발생할 수 있습니다.

분류에서Dev

Entity Framework Core 3.1 코드 첫 번째 고유 제약 조건이 작동하지 않습니다.

분류에서Dev

Entity Framework 코드의 DbSet <TEntity>에서 상속 첫 번째 NullReference

분류에서Dev

Entity Framework 코드 페이로드가있는 첫 번째 자체 참조 상위 자식

분류에서Dev

PL-SQL-일대 다 관계 왼쪽 조인의 첫 번째 레코드

분류에서Dev

PyQt4 : 첫 번째 코드를 작성할 때 대화 상자를 열 수 없습니다.

분류에서Dev

Laravel의 세 번째 수준 관계에 대한 Lazy Eager Loading

분류에서Dev

세 번째, 네 번째, 다섯 번째 ... 단어 일치에 대한 정규식

분류에서Dev

1 대 다 관계에서 쿼리를 작성하여 SQL 쿼리의 두 번째 테이블에서 임의의 1 레코드를 얻는 방법

분류에서Dev

Angular2 두 번째 수준 자식이 첫 번째 자식의 루트 insteead로 라우팅됩니다.

분류에서Dev

첫 번째 일치 값 대신 두 번째, 세 번째, 네 번째 또는 다섯 번째 텍스트 값에 대한 Excel Vlookup

분류에서Dev

CSS 첫 번째 자식이 두 번째로 작동하지 않습니다.

분류에서Dev

세 번째 수준 항목에 대한 jQuery.mmenu 세로 드롭 다운

분류에서Dev

Entity Framework 코드 클래스의 첫 번째 속성 및 동일한 클래스의 목록

분류에서Dev

jquery.children은 첫 번째 자식에 대해서만 작동합니다.

분류에서Dev

PHP 함수 내의 자바 스크립트 코드는 첫 번째 호출에서만 작동합니다.

Related 관련 기사

  1. 1

    Entity Framework 코드 첫 번째 다 대다 관계가 작동하지 않음

  2. 2

    Entity Framework 다 대다 관계 수동으로 세 번째 테이블 만들기

  3. 3

    Entity Framework 코드 첫 번째주기 또는 다중 계단식 경로

  4. 4

    Entity Framework 코드 첫 번째 관계 저장 문제

  5. 5

    Entity Framework 코드 첫 번째 선택적 속성이 필수로 매핑 됨

  6. 6

    Access 양식에서 다 대다 관계의 세 번째 테이블을 어떻게 채울 수 있습니까? (MySQL 백엔드)

  7. 7

    Entity Framework 6 코드 첫 번째 대소 문자를 구분하지 않는 문자열 연결

  8. 8

    Entity Framework 6 코드 첫 번째 외래 키 관계를 통한 컬렉션 저장

  9. 9

    다 대다 관계 테이블 코드 첫 번째 엔터티 프레임 워크에 열 추가

  10. 10

    Entity Framework 6 코드 첫 번째 트리거

  11. 11

    EF 코드 첫 번째 다 대다 : 세 번째 테이블의 이름을 지정하고 다른 속성을 추가하는 방법은 무엇입니까?

  12. 12

    엔티티 프레임 워크 6 코드 첫 번째 일대 다 선택적 관계 제거 하위 문제

  13. 13

    Entity Framework 코드 첫 번째 GenericTypeArguments

  14. 14

    Entity Framework 코드 첫 번째 외래 키로 인해 순환 또는 다중 계단식 경로가 발생할 수 있습니다.

  15. 15

    Entity Framework Core 3.1 코드 첫 번째 고유 제약 조건이 작동하지 않습니다.

  16. 16

    Entity Framework 코드의 DbSet <TEntity>에서 상속 첫 번째 NullReference

  17. 17

    Entity Framework 코드 페이로드가있는 첫 번째 자체 참조 상위 자식

  18. 18

    PL-SQL-일대 다 관계 왼쪽 조인의 첫 번째 레코드

  19. 19

    PyQt4 : 첫 번째 코드를 작성할 때 대화 상자를 열 수 없습니다.

  20. 20

    Laravel의 세 번째 수준 관계에 대한 Lazy Eager Loading

  21. 21

    세 번째, 네 번째, 다섯 번째 ... 단어 일치에 대한 정규식

  22. 22

    1 대 다 관계에서 쿼리를 작성하여 SQL 쿼리의 두 번째 테이블에서 임의의 1 레코드를 얻는 방법

  23. 23

    Angular2 두 번째 수준 자식이 첫 번째 자식의 루트 insteead로 라우팅됩니다.

  24. 24

    첫 번째 일치 값 대신 두 번째, 세 번째, 네 번째 또는 다섯 번째 텍스트 값에 대한 Excel Vlookup

  25. 25

    CSS 첫 번째 자식이 두 번째로 작동하지 않습니다.

  26. 26

    세 번째 수준 항목에 대한 jQuery.mmenu 세로 드롭 다운

  27. 27

    Entity Framework 코드 클래스의 첫 번째 속성 및 동일한 클래스의 목록

  28. 28

    jquery.children은 첫 번째 자식에 대해서만 작동합니다.

  29. 29

    PHP 함수 내의 자바 스크립트 코드는 첫 번째 호출에서만 작동합니다.

뜨겁다태그

보관