> 데이터 베이스 > MySQL 튜토리얼 > Entity Framework를 사용하여 MySQL의 'ulong' 속성을 서명되지 않은 BigInt에 매핑하는 방법은 무엇입니까?

Entity Framework를 사용하여 MySQL의 'ulong' 속성을 서명되지 않은 BigInt에 매핑하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-03 04:09:02
원래의
1060명이 탐색했습니다.

How to Map `ulong` Properties to Unsigned BigInts in MySQL with Entity Framework?

Entity Framework의 "uint" 및 "ulong" 유형

Entity Framework에서 긴 데이터 유형을 사용하는 클래스 특성은 매핑될 수 있습니다. 새 마이그레이션을 추가할 때(코드 우선) 올바르지만 mysql용 EF 공급자는 ulong 데이터 유형을 건너뜁니다. mysql의 unsigned bigint에 속성을 어떻게 매핑합니까?

업데이트됨(2021년 2월)

이제 EF Core가 ulong을 지원하는 것 같습니다. 아래 @JimbobTheSailor의 답변을 참조하세요.

이전 Entity Framework 버전:

Entity Framework는 서명되지 않은 데이터 유형을 지원하지 않는 것으로 나타났습니다. 단위 열의 경우 값은 더 큰 부호 있는 데이터 유형(예: long)으로 저장될 수 있습니다. 울롱 컬럼은 어떻습니까? 일반 솔루션은 오버플로 없이 ulong을 보유할 수 있을 만큼 큰 EF에서 지원하는 서명된 데이터 형식이 없기 때문에 나에게 적합하지 않습니다.

잠시 고민 끝에 이 문제에 대한 간단한 해결책을 찾았습니다. 지원되는 long 유형으로 데이터를 저장하고 액세스할 때 ulong으로 변환하면 됩니다. "잠깐, ulong의 최대값 > long의 최대값!"이라고 생각할 수도 있습니다. ulong의 바이트를 long에 저장한 다음 필요할 때 ulong으로 다시 변환할 수 있습니다. 왜냐하면 둘 다 8개이기 때문입니다. 바이트. 이렇게 하면 EF를 통해 ulong 변수를 데이터베이스에 저장할 수 있습니다.

<code class="csharp">// 避免直接修改以下内容。
// 仅用作数据库列。
public long __MyVariable { get; set; }

// 访问/修改此变量。
// 告诉 EF 不要将此字段映射到数据库表
[NotMapped]
public ulong MyVariable
{
    get
    {
        unchecked
        {
            return (ulong)__MyVariable;
        }
    }

    set
    {
        unchecked
        {
            __MyVariable = (long)value;
        }
    }
}</code>
로그인 후 복사

변환을 확인하지 않으면 오버플로 예외를 방지합니다.

도움이 되었기를 바랍니다.

위 내용은 Entity Framework를 사용하여 MySQL의 'ulong' 속성을 서명되지 않은 BigInt에 매핑하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿