필요한 열이 'FromSql'작업의 결과에없고 [NotMapped]가 도움이되지 않았습니다.

ConfuedProblemSolver

EF Core 3.0을 사용하여 SQL Server 저장 프로 시저의 데이터를 Recipient. Recipient모델은 정의 된 속성의 부부가 EnvelopeIdName저장 프로 시저에서 반환되지 않습니다. 를 사용하여 저장 프로 시저를 호출 FromSqlInterpolated하면 오류 메시지가 나타납니다.

필수 열 'EnvelopeId1'이 'FromSql'작업의 결과에 없습니다.

EF Core 설명서에서 읽은 내용에서 [NotMapped]해당 속성에 특성을 추가 할 수 있어야 하며 EF Core는 데이터베이스에서 읽거나 쓰는 동안 속성을 무시할 수 있어야합니다. 맞습니까? 불행히도 그것은 나를 위해 작동하지 않으며 위의 오류가 발생합니다.

저장 프로 시저에 두 개의 열을 추가하고 [NotMapped]개체 모델에서 특성을 제거하면 모든 것이 제대로 작동합니다. 이것은 내 다른 열 / 속성 이름이 올바르게 일치하고 어디에도 오타가 없음을 증명합니다.

DbQuery대신 을 사용 하는 제안을 보았지만 DbSet더 이상 사용되지 않으므로 사용하고 싶지 않습니다. 저장 프로 시저 결과 집합과 정확히 일치하는 속성을 가진 두 가지 개체 모델 사용에 대한 제안을 보았습니다. 내가 여기서 뭘 잘못하고 있니?

내 개체 모델 :

using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace MyNamespace.Models
{
    public class Recipient
    {
        [Key]
        public long RecipientId { get; set; }
        [NotMapped]
        public Guid? EnvelopeId { get; set; }
        public string Type { get; set; }
        public string UserId { get; set; }
        public string Email { get; set; }
        [NotMapped]
        public string Name { get; set; }
        public string RoleName { get; set; }
        public int RoutingOrder { get; set; }
        public string Status { get; set; }
        public DateTime StatusDate { get; set; }

        public Recipient() { }
    }
}

내 DB 컨텍스트 :

using Microsoft.EntityFrameworkCore;
using MyNamespace.Models;

namespace MyNamespace.Data
{
    public class MyDbContext : DbContext
    {
        public virtual DbSet<Recipient> Recipient { get; set; }
        public virtual DbSet<Envelope> Envelope { get; set; }
        public virtual DbSet<Template> Template { get; set; }

        public MyDbContext (DbContextOptions<MyDbContext> options) : base(options)   
        { }
    }
}

내 실패 코드 :

FormattableString sql = $"EXEC dbo.MyStoredProcedure @Param1={param1}, @Param2={param2}";
var result = await MyDbContext.Recipient.FromSqlInterpolated(sql).ToListAsync();

# 1 편집 ...

Envelope개체 모델 :

public class Envelope
{
    [Key]
    public Guid EnvelopeId { get; set; }
    public string Status { get; set; }
    public DateTime StatusDate { get; set; }
    public DateTime StatusPollDate { get; set; }
    [NotMapped]
    public List<Recipient> Recipients { get; set; }

    public Envelope() {
        Recipients = new List<Recipient>();
        StatusPollDate = DateTime.Parse("1753-01-01");
    }
}

저장 프로 시저 결과 집합 스키마 :

[RecipientId] bigint,
[Type] varchar(20),
[UserId] varchar(50),
[Email] varchar(100),
[RoleName] varchar(100),
[RoutingOrder] int,
[Status] varchar(13),
[StatusDate] datetime

일부 답변과 주석을 읽은 후 EF RecipientEnvelope개체 의 자식 임을 인식하기 때문에 그림자 속성이 생성된다는 것을 깨달았습니다 . 솔직히 말해서, 난 정말 해야 인클루드 EnvelopeId결과 집합 (및 제거에 [NotMapped]진정 EF 코어를). 내가 EnvelopeId저장 프로 시저의 결과 집합에서 반환하지 않은 유일한 이유는 시작하기 위해 입력 매개 변수로 전달했고, 무언가를 전달하고 각 결과에서 다시 가져 오는 데 네트워크 리소스를 낭비하고 있다고 생각했기 때문입니다. 기록을 세우십시오.

이제 어디서 EnvelopeId1왔는지 모르겠지만 오류 메시지가 언급 한 것입니다. 내 개체 모델과 저장 프로 시저 결과 집합 스키마에서 볼 수 있듯이 EnvelopeId. 내 가장 좋은 추측은 EF Core가 섀도우 속성을 만들기로 결정했을 때 EnvelopeId이미 개체 모델에 있었기 때문에 사용할 수 없었기 때문에 호출 된 속성 을 만든 EnvelopeId1다음 저장 프로 시저의 결과 집합에있을 것으로 예상했습니다. .

크리스 샬러

이 오류 메시지에는 두 가지 이유가 있습니다.

필수 열 'EnvelopeId1'이 'FromSql'작업의 결과에 없습니다.

분명한 것은 SQL 결과 집합의 모든 열에 대해 수화하려는 개체 그래프에 해당 속성이 있어야한다는 것입니다.이 경우 Recipient클래스에는 EnvelopeId1.

쿼리가 저장 프로 시저이기 때문에 SQL 결과를 다음과 같은 질문에 게시하는 것이 좋습니다. 그러면 개체 그래프에 매핑하려는 SQL 구조가 표시됩니다.

그 이유 EnvelopeId1엔티티 프레임 워크가 만들어 때문에 개체 그래프에 SQL 테이블에 있지만은 그림자 속성 위해 당신이 속성을 정의하지 않은 것을 외국인 을 위해.

당신은 스키마를 나열하지 Envelope않았지만 내 돈은 당신이 동등한 ICollection<Recipient>재산 을 가지고 있다고 말합니다 .

에 대한 NotMapped속성을 생성 EnvelopeId하면이 스키마가 더 혼란스러워지고 대신 올바르게 매핑하거나 저장 프로 시저 출력에서 ​​생략해야합니다.

FromSqlEF (.Net 또는 Core)에서 변형 을 사용 하려는 경우 데이터베이스에있는 열을 명시 적으로 생략하지 않는 한 데이터베이스의 Shadow 또는 Auto 외래 키 열로 인해 항상 스키마 클래스에서 탐색 속성을 정의해야 합니다. 하지만 당신의 스키마에는

즉, SELECT *모든 열을 명시 적으로 정의 할 필요가 없습니다 .

해결 방법 1 : 저장 프로 시저 수정 받는 사람 테이블에서
반환되지 않도록 저장 프로 시저를 간단히 수정할 수 있습니다 EvelopeId1.

솔루션 2 : 데이터 클래스에있는 모든 관계의 양쪽 끝에 대한 속성을 완전히 정의합니다.
여기서는 EnvelopeId1마이그레이션이 필요하지 않도록 이름으로 사용 했지만이 이름을로 변경하는 것이 좋습니다. EnvelopeId개인적으로 DB에있는 모든 필드의 존재를 사용합니다. 내 관계 중 일부가 부적절하게 정의되었음을 나타내는 숫자로 끝납니다.

public class Recipient
{
    [Key]
    public long RecipientId { get; set; }
    public Guid? EnvelopeId1 { get; set; }
    [ForeignKey(nameof(EnvelopeId1))]
    public virtual Envelope Envelope { get; set; }
    public string Type { get; set; }
    public string UserId { get; set; }
    public string Email { get; set; }
    [NotMapped]
    public string Name { get; set; }
    public string RoleName { get; set; }
    public int RoutingOrder { get; set; }
    public string Status { get; set; }
    public DateTime StatusDate { get; set; }

    public Recipient() { }
}

이는 Envelope 클래스에 다음 부분 정의와 유사한 정의가 있다는 가정을 기반으로합니다.

public class Envelope
{
    [Key]
    public Guid EnvelopeId { get; set; }
    public virtual ICollection<Recipient> Recipients { get; set; } = new Hashset<Recipient>();
    ...
}

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

해결하는 데 도움이 필요함-포착되지 않은 ReferenceError : 데이터가 정의되지 않았습니다.

분류에서Dev

PHP : str_replace가 작동하지 않습니다 (SO에 대한 다른 답변은 도움이되지 않았습니다)

분류에서Dev

PHP : str_replace가 작동하지 않습니다 (SO에 대한 다른 답변은 도움이되지 않았습니다)

분류에서Dev

작업에 대한 이상한 경고가 var ++에 대해 정의되지 않았을 수 있습니다.

분류에서Dev

도움! 내 노트북이 시작되지 않습니다. '부팅 가능한 이미지가 없습니다'

분류에서Dev

내 JS Bin이 "필요"로 작동하도록 만들 수 없습니다. 오류 반응 / redux가 정의되지 않았습니다.

분류에서Dev

디버깅에 도움이 필요하고 코드가 컴파일되지만 실행되지 않습니다.

분류에서Dev

OpenVPNServiceInteractive가 시작되지 않았습니다. 관리 액세스가 필요한 작업이 작동하지 않을 수 있습니다.

분류에서Dev

python OOP if 문에 스팸이 필요하고 변수가 정의되지 않았습니다.

분류에서Dev

우분투 10.10의 PHP Cron 작업이 lampp에 대해 실행되지 않음-도움말 필요

분류에서Dev

내 테이블 뷰가 생성되었지만 배열이 테이블 뷰에 표시되지 않습니다. 콘솔에서 모든 데이터가오고 있습니다 .json 구문 분석을 해결하는 데 도움이 필요합니다.

분류에서Dev

동일한 업데이트에 갇혀 있습니다. apt-get 업데이트가 도움이되지 않는 것 같습니다.

분류에서Dev

내 pytesseract가 작동하지 않습니다 (도움이 필요합니다)

분류에서Dev

[javax.persistence.EntityManagerFactory] 유형의 고유 한 Bean이 정의되지 않았습니다. 단일 Bean이 필요하지만 0을 찾았습니다.

분류에서Dev

Pandas의 행 작업에 도움이 필요합니다.

분류에서Dev

tput : $ TERM에 대한 값이없고 -T가 지정되지 않았습니다.

분류에서Dev

$ TERM에 대한 값이없고 -T가 지정되지 않았습니다.

분류에서Dev

tput : $ TERM에 대한 값이없고 -T가 지정되지 않았습니다.

분류에서Dev

경고 "<변수>에 대한 작업이 정의되지 않았을 수 있습니다."

분류에서Dev

OpenSSL Crypto 개발 라이브러리가 필요한 위치에 제대로 설치되지 않았습니다.

분류에서Dev

jquery ajax 요청 결과가 정의되지 않았습니다.

분류에서Dev

C #은 배열 작업에 도움이 필요합니다.

분류에서Dev

이 개체가 정의되지 않은 이유를 파악하는 데 도움이 필요합니다.

분류에서Dev

ansible 플레이 북-작업이 완료되지 않았고 결과가 없으며 콘솔에서 여전히 실행 중입니다.

분류에서Dev

Eclipse에서 ADT가 업데이트되지 않았습니다.

분류에서Dev

예기치 않은 '컬렉션이 수정되었습니다. 열거 작업이 실행되지 않을 수 있습니다. ' 목록이 수정되지 않았음에도 불구하고 목록 열거에 대한 예외

분류에서Dev

내가 속한 기능이 정의되지 않았습니다.

분류에서Dev

DataTable 열거의 LINQ에서 결과가 생성되지 않았습니다.

분류에서Dev

문의 양식을 제출 한 후 자바 스크립트 페이드 인 효과가 발생하지 않도록하는 데 도움이 필요합니다.

Related 관련 기사

  1. 1

    해결하는 데 도움이 필요함-포착되지 않은 ReferenceError : 데이터가 정의되지 않았습니다.

  2. 2

    PHP : str_replace가 작동하지 않습니다 (SO에 대한 다른 답변은 도움이되지 않았습니다)

  3. 3

    PHP : str_replace가 작동하지 않습니다 (SO에 대한 다른 답변은 도움이되지 않았습니다)

  4. 4

    작업에 대한 이상한 경고가 var ++에 대해 정의되지 않았을 수 있습니다.

  5. 5

    도움! 내 노트북이 시작되지 않습니다. '부팅 가능한 이미지가 없습니다'

  6. 6

    내 JS Bin이 "필요"로 작동하도록 만들 수 없습니다. 오류 반응 / redux가 정의되지 않았습니다.

  7. 7

    디버깅에 도움이 필요하고 코드가 컴파일되지만 실행되지 않습니다.

  8. 8

    OpenVPNServiceInteractive가 시작되지 않았습니다. 관리 액세스가 필요한 작업이 작동하지 않을 수 있습니다.

  9. 9

    python OOP if 문에 스팸이 필요하고 변수가 정의되지 않았습니다.

  10. 10

    우분투 10.10의 PHP Cron 작업이 lampp에 대해 실행되지 않음-도움말 필요

  11. 11

    내 테이블 뷰가 생성되었지만 배열이 테이블 뷰에 표시되지 않습니다. 콘솔에서 모든 데이터가오고 있습니다 .json 구문 분석을 해결하는 데 도움이 필요합니다.

  12. 12

    동일한 업데이트에 갇혀 있습니다. apt-get 업데이트가 도움이되지 않는 것 같습니다.

  13. 13

    내 pytesseract가 작동하지 않습니다 (도움이 필요합니다)

  14. 14

    [javax.persistence.EntityManagerFactory] 유형의 고유 한 Bean이 정의되지 않았습니다. 단일 Bean이 필요하지만 0을 찾았습니다.

  15. 15

    Pandas의 행 작업에 도움이 필요합니다.

  16. 16

    tput : $ TERM에 대한 값이없고 -T가 지정되지 않았습니다.

  17. 17

    $ TERM에 대한 값이없고 -T가 지정되지 않았습니다.

  18. 18

    tput : $ TERM에 대한 값이없고 -T가 지정되지 않았습니다.

  19. 19

    경고 "<변수>에 대한 작업이 정의되지 않았을 수 있습니다."

  20. 20

    OpenSSL Crypto 개발 라이브러리가 필요한 위치에 제대로 설치되지 않았습니다.

  21. 21

    jquery ajax 요청 결과가 정의되지 않았습니다.

  22. 22

    C #은 배열 작업에 도움이 필요합니다.

  23. 23

    이 개체가 정의되지 않은 이유를 파악하는 데 도움이 필요합니다.

  24. 24

    ansible 플레이 북-작업이 완료되지 않았고 결과가 없으며 콘솔에서 여전히 실행 중입니다.

  25. 25

    Eclipse에서 ADT가 업데이트되지 않았습니다.

  26. 26

    예기치 않은 '컬렉션이 수정되었습니다. 열거 작업이 실행되지 않을 수 있습니다. ' 목록이 수정되지 않았음에도 불구하고 목록 열거에 대한 예외

  27. 27

    내가 속한 기능이 정의되지 않았습니다.

  28. 28

    DataTable 열거의 LINQ에서 결과가 생성되지 않았습니다.

  29. 29

    문의 양식을 제출 한 후 자바 스크립트 페이드 인 효과가 발생하지 않도록하는 데 도움이 필요합니다.

뜨겁다태그

보관