NHibernate와 웹 API를 사용하여 JSON을 통해 중첩 된 객체 삽입

Stefan Eeckhoudt

ReadAPI와 WriteAPI로 구성된 애플리케이션을 작성하고 있습니다. 읽기 API에는 도메인 클래스가 포함되어 있으며 먼저 EF CORE 코드를 사용하여 SQL DB를 생성하고이를 읽습니다.

쓰기 API는 NHibernate를 사용하여 EF Core에서 생성 된 데이터베이스에 씁니다. 지금까지 잘 작동하는 쓰기 API를 통해 '간단한'개체를 삽입했습니다.

지금 문제가 발생했습니다. 내부에 중첩 된 개체 인 Address가있는 도메인 클래스 Driver가 있습니다. DB 수준에서 드라이버는 하나의 주소를 가질 수 있고 주소는 여러 드라이버에 속할 수 있습니다. 쓰기 API를 통해 드라이버 개체 인 JSON 개체를 게시하려고합니다. 지금까지는 미리 DB에 주소 레코드를 생성하고 JSON에 주소 ID를 부여하여 주소를 삽입하는 문제를 해결했습니다.

이제 내가 원하는 것은 완전한 중첩 JSON 객체를 제공하고 NHibernate가 나를 위해 삽입을 생성하도록하는 것입니다. 나는 많은 것을 시도했지만 아무데도 가지 않는 것 같습니다. 어떤 조언이라도 대단히 감사하겠습니다.

이미 코드 기능에 의한 매핑이있는 NHiberate 5.3.5와 함께 .Net Core를 사용하고 있습니다. 누군가 Fluent NH를 사용하여 해결할 수 있다면 NH 5.3.5 표기법으로 직접 변환 할 것이므로 괜찮습니다.

내 코드 :

도메인 클래스 :

운전사:

namespace Models
{
    public class Chauffeur : IIdentifiable
    {
        public virtual long Id { get; set; }
        public virtual string Naam { get; set; }
        public virtual string Voornaam { get; set; }
        public virtual DateTime GeboorteDatum { get; set; }
        //todo validatie
        public virtual string RijksRegisterNummer { get; set; }
        public virtual RijbewijsTypes TypeRijbewijs { get; set; }
        public virtual bool Actief { get; set; }

        //rel adres
        public virtual long AdresId { get; set; }
        public virtual Adres Adres { get; set; }

        //rel tankkaart
        public virtual long TankkaartId { get; set; }
        public virtual Tankkaart Tankkaart { get; set; }

    }
}

주소:

namespace Models
{
    public class Adres : IIdentifiable
    {
        public virtual long Id { get; set; }
        public virtual string Straat { get; set; }
        public virtual int Nummer { get; set; }
        public virtual string Stad { get; set; }
        public virtual int Postcode { get; set; }
        public virtual ICollection<Chauffeur> Chauffeurs { get; set; }
    }
}

지금까지 내 DriverMap :

namespace WriteAPI
{
    public class ChauffeurMap : ClassMapping<Chauffeur>
    {
        public ChauffeurMap()
        {
            this.Table("Chauffeurs");

            this.Id(c => c.Id, c =>
            {
                c.Generator(Generators.Native);
                c.Type(NHibernateUtil.Int64);
                c.Column("Id");
                c.UnsavedValue(0);
            });
            
            this.Property(c => c.Naam);
            this.Property(c => c.Voornaam);
            this.Property(c => c.GeboorteDatum);
            this.Property(c => c.RijksRegisterNummer);
            this.Property(c => c.TypeRijbewijs);
            this.Property(c => c.Actief);

            this.Property(c => c.AdresId);

            this.Property(c => c.TankkaartId);
        }
    }
}

이 매핑을 사용하면 기존 자식 주소 ID를 사용하여 중첩 된 개체를 삽입 할 수 있습니다.

게시물을 통해 어떻게 삽입했는지 :

{
                "Naam" : "Bart",
                "Voornaam" : "Jannsses",
                "AdresId" : 4,
                "GeboorteDatum" : "1979-04-25",
                "RijksRegisterNummer" : "999-888-7777",
                "TypeRijbewijs" : 1,
                "Actief" : true
}

나중에 삽입하는 방법 :

{
                "Naam" : "Bart",
                "Voornaam" : "Jannsses",
                "Adres" : {
                    "Straat": "Boomstraat", 
                    "Nummer": 1, 
                    "Stad": "Gent", 
                    "Postcode": 9000
                          },
                "GeboorteDatum" : "1979-04-25",
                "RijksRegisterNummer" : "999-888-7777",
                "TypeRijbewijs" : 1,
                "Actief" : true
}

주소의 ID는 DB 수준에서 자동 생성됩니다.

어떤 도움이라도 대단히 감사하겠습니다.

종류 안부

니힐 파틸

클래스 ManyToOne매핑 을 추가해야합니다.ChauffeurMap

 this.ManyToOne(x => x.Adres , m =>
        {
            m.Column("AdresId");
            // AdresId can be insert and update
            m.Update(true);
            m.Insert(true);
            m.Cascade(Cascade.None);
            m.Fetch(FetchKind.Join);
            m.NotFound(NotFoundMode.Exception);
            m.Lazy(LazyRelation.Proxy);
            m.ForeignKey("AdresId");
        });

또한 Adresas에 대한 추가 매핑 클래스가 필요 합니다 AdresMap. 이미 가지고 계시길 바랍니다. 그렇지 않은 경우 아래에 추가하십시오-

public class AdresMap : ClassMapping<Adres> 
{
    public AdresMap()
    {
    this.Table("Adres"); //Your table name
    this.Id(c => c.Id, c =>
        {
            c.Generator(Generators.Native);
            c.Type(NHibernateUtil.Int64);
            c.Column("Id");
            c.UnsavedValue(0);
        });

    Set(x => x.Chauffeurs, c =>
        {
            c.Key(k =>
                {
                    k.Column("Id");
                    k.ForeignKey("AdresId");
                });
            c.Inverse(true);
            c.Cascade(Cascade.None);
        },
        r => r.OneToMany(o => { }));

    this.Property(x => x.Straat );
    // ... other properties
   }
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

중첩 된 숫자 키 json 객체를 통해 반복

분류에서Dev

잭슨를 사용하여 중첩 된 JSON 객체의 배열을 변경

분류에서Dev

중첩 된 객체 JSON을 통해 * ngFor로 반복하는 방법

분류에서Dev

Elastic을 사용하여 중첩 된 객체에 대해 하위 집계를 수행하는 방법은 무엇입니까?

분류에서Dev

underscorejs를 사용하여 중첩 된 객체의 내부 배열을 얻는 방법은 무엇입니까?

분류에서Dev

웹 API가 데이터베이스에서 HttpPost 호출을 통해 중첩 된 JSON 값을 반환하는 방법은 무엇입니까?

분류에서Dev

Play JSON을 사용하여 중첩 된 스칼라 객체를 JSON 문자열로 변환

분류에서Dev

Bash-배열을 사용하여 중첩 된 for 루프를 통해 반복

분류에서Dev

RestKit을 사용하여 중첩 된 JSON 객체를 Core Data에 저장하는 방법

분류에서Dev

Python을 사용하여 웹 사이트에서 독립적으로 중첩 된 여러 JSON 개체 및 키를 추출하는 방법

분류에서Dev

Dataweave 2.0을 사용하여 JSON 개체를 중첩 된 JSON 개체로 분리

분류에서Dev

기본값을 사용하여 객체에 중첩 된 사전

분류에서Dev

Gson을 사용하여 중첩 된 JSON 객체에서 데이터를 가져 오는 방법

분류에서Dev

Symfony 4에서 중첩 된 DateTime 객체를 사용하여 json을 엔티티로 역 직렬화

분류에서Dev

Moya.Response 쿼리를 통해 반환 된 객체에서 중첩 된 JSON 배열을 구문 분석하는 방법

분류에서Dev

jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

분류에서Dev

body-parser를 사용하여 nodejs 및 mongoose를 사용하여 중첩 된 객체의 배열을 mongodb 데이터베이스에 삽입 / 추가하는 방법

분류에서Dev

준비된 문을 사용하여 json 객체를 mysql에 삽입하지 못함 (없이 작동)

분류에서Dev

깊이 중첩 된 객체를 재귀 적으로 중첩 해제하는 방법은 무엇입니까?

분류에서Dev

jq를 사용하여 중첩 된 객체 배열 변환

분류에서Dev

mysql 네이티브 JSON 함수를 사용하여 중첩 된 JSON 객체를 생성하려면 어떻게해야합니까?

분류에서Dev

반복기를 사용하여 중첩 된 맵에 값 삽입

분류에서Dev

Volley를 사용하여 중첩 된 JSON 개체 구문 분석

분류에서Dev

중첩 된 객체를 통해 jquery 반복

분류에서Dev

JQ를 사용하여 중첩 된 객체를 병합하고 모양을 변경하는 방법은 무엇입니까?

분류에서Dev

Gson을 사용하여 키없이 중첩 된 JSON 객체 구문 분석

분류에서Dev

Gson을 사용하여 JSON 파일에서 중첩 된 객체 검색

분류에서Dev

ngFor를 사용하여 Angular에서 중첩 된 json 객체의 알 수없는 수를 반복하는 방법은 무엇입니까?

분류에서Dev

Node.js를 사용하여 JSON에서 중첩 된 객체를 반복하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    중첩 된 숫자 키 json 객체를 통해 반복

  2. 2

    잭슨를 사용하여 중첩 된 JSON 객체의 배열을 변경

  3. 3

    중첩 된 객체 JSON을 통해 * ngFor로 반복하는 방법

  4. 4

    Elastic을 사용하여 중첩 된 객체에 대해 하위 집계를 수행하는 방법은 무엇입니까?

  5. 5

    underscorejs를 사용하여 중첩 된 객체의 내부 배열을 얻는 방법은 무엇입니까?

  6. 6

    웹 API가 데이터베이스에서 HttpPost 호출을 통해 중첩 된 JSON 값을 반환하는 방법은 무엇입니까?

  7. 7

    Play JSON을 사용하여 중첩 된 스칼라 객체를 JSON 문자열로 변환

  8. 8

    Bash-배열을 사용하여 중첩 된 for 루프를 통해 반복

  9. 9

    RestKit을 사용하여 중첩 된 JSON 객체를 Core Data에 저장하는 방법

  10. 10

    Python을 사용하여 웹 사이트에서 독립적으로 중첩 된 여러 JSON 개체 및 키를 추출하는 방법

  11. 11

    Dataweave 2.0을 사용하여 JSON 개체를 중첩 된 JSON 개체로 분리

  12. 12

    기본값을 사용하여 객체에 중첩 된 사전

  13. 13

    Gson을 사용하여 중첩 된 JSON 객체에서 데이터를 가져 오는 방법

  14. 14

    Symfony 4에서 중첩 된 DateTime 객체를 사용하여 json을 엔티티로 역 직렬화

  15. 15

    Moya.Response 쿼리를 통해 반환 된 객체에서 중첩 된 JSON 배열을 구문 분석하는 방법

  16. 16

    jquery를 사용하여 중첩 된 JSON 개체에서 값을 가져 오는 방법은 무엇입니까?

  17. 17

    body-parser를 사용하여 nodejs 및 mongoose를 사용하여 중첩 된 객체의 배열을 mongodb 데이터베이스에 삽입 / 추가하는 방법

  18. 18

    준비된 문을 사용하여 json 객체를 mysql에 삽입하지 못함 (없이 작동)

  19. 19

    깊이 중첩 된 객체를 재귀 적으로 중첩 해제하는 방법은 무엇입니까?

  20. 20

    jq를 사용하여 중첩 된 객체 배열 변환

  21. 21

    mysql 네이티브 JSON 함수를 사용하여 중첩 된 JSON 객체를 생성하려면 어떻게해야합니까?

  22. 22

    반복기를 사용하여 중첩 된 맵에 값 삽입

  23. 23

    Volley를 사용하여 중첩 된 JSON 개체 구문 분석

  24. 24

    중첩 된 객체를 통해 jquery 반복

  25. 25

    JQ를 사용하여 중첩 된 객체를 병합하고 모양을 변경하는 방법은 무엇입니까?

  26. 26

    Gson을 사용하여 키없이 중첩 된 JSON 객체 구문 분석

  27. 27

    Gson을 사용하여 JSON 파일에서 중첩 된 객체 검색

  28. 28

    ngFor를 사용하여 Angular에서 중첩 된 json 객체의 알 수없는 수를 반복하는 방법은 무엇입니까?

  29. 29

    Node.js를 사용하여 JSON에서 중첩 된 객체를 반복하는 방법은 무엇입니까?

뜨겁다태그

보관