엔티티 프레임 워크 - Azure 테이블 저장소 공급자 - 열거 형 지원

azure-table-storage entity-framework-core

문제

실제로 EF ( EntityFramework.AzureTableStorage 7.0.0-beta1 )에 Azure 저장소 테이블 공급자를 사용하고 있습니다.

DbContext를 구성하는 방법이 끝났습니다.

public class Subscription
{
    public string Environment { get; set; }

    public string Name { get; set; }

    ...
    ...            
}

public class EF7Context : DbContext
{
    public DbSet<Subscription> Subscriptions { get; set; }

    protected override void OnConfiguring(DbContextOptions options)
    {
        options.UseAzureTableStorage("MyconnectionString");
    }

    protected override void OnModelCreating(Microsoft.Data.Entity.Metadata.ModelBuilder modelBuilder)
    {
        // Configure the Azure Table Storage
        modelBuilder.Entity<Subscription>()
            .ForAzureTableStorage() // Data are stored in an Azure Table Storage.
            .Table("SubscriptionDev") // Name of the Table in the Azure Storage Account
            .PartitionAndRowKey(s => s.Environment, s => s.Name); // Map the partition and the row key
    }
}

하지만 지금 Subscription 모델의 일부로 열거 형을 추가하고 싶습니다. 나는 이것을하기위한 해결 방법을 발견했다.

열거 형 있어요 :

public class Subscription
{
    public string Environment { get; set; }

    public string Name { get; set; }

    ...
    ...            
}

public class EF7Context : DbContext
{
    public DbSet<Subscription> Subscriptions { get; set; }

    protected override void OnConfiguring(DbContextOptions options)
    {
        options.UseAzureTableStorage("MyconnectionString");
    }

    protected override void OnModelCreating(Microsoft.Data.Entity.Metadata.ModelBuilder modelBuilder)
    {
        // Configure the Azure Table Storage
        modelBuilder.Entity<Subscription>()
            .ForAzureTableStorage() // Data are stored in an Azure Table Storage.
            .Table("SubscriptionDev") // Name of the Table in the Azure Storage Account
            .PartitionAndRowKey(s => s.Environment, s => s.Name); // Map the partition and the row key
    }
}

Subscription 클래스에 다음 속성을 추가했습니다.

public class Subscription
{
    public string Environment { get; set; }

    public string Name { get; set; }

    ...
    ...            
}

public class EF7Context : DbContext
{
    public DbSet<Subscription> Subscriptions { get; set; }

    protected override void OnConfiguring(DbContextOptions options)
    {
        options.UseAzureTableStorage("MyconnectionString");
    }

    protected override void OnModelCreating(Microsoft.Data.Entity.Metadata.ModelBuilder modelBuilder)
    {
        // Configure the Azure Table Storage
        modelBuilder.Entity<Subscription>()
            .ForAzureTableStorage() // Data are stored in an Azure Table Storage.
            .Table("SubscriptionDev") // Name of the Table in the Azure Storage Account
            .PartitionAndRowKey(s => s.Environment, s => s.Name); // Map the partition and the row key
    }
}

그리고 EF 구성에서 Priority 속성을 그림자로 선언하여 Azure 테이블에 PriorityId와 Priority를 ​​둘 다 저장하지 않도록하십시오.

public class Subscription
{
    public string Environment { get; set; }

    public string Name { get; set; }

    ...
    ...            
}

public class EF7Context : DbContext
{
    public DbSet<Subscription> Subscriptions { get; set; }

    protected override void OnConfiguring(DbContextOptions options)
    {
        options.UseAzureTableStorage("MyconnectionString");
    }

    protected override void OnModelCreating(Microsoft.Data.Entity.Metadata.ModelBuilder modelBuilder)
    {
        // Configure the Azure Table Storage
        modelBuilder.Entity<Subscription>()
            .ForAzureTableStorage() // Data are stored in an Azure Table Storage.
            .Table("SubscriptionDev") // Name of the Table in the Azure Storage Account
            .PartitionAndRowKey(s => s.Environment, s => s.Name); // Map the partition and the row key
    }
}

그래서 이것을 달성하는 더 좋은 방법이 있는지 그리고 / 또는 EF.AzureTableStorage의 다음 버전이 Enum을 지원할 것인지 궁금합니다.

감사

수락 된 답변

EF Azure 테이블 스토리지 베타 1은 현재 단종 된 프로토 타입입니다. https://stackoverflow.com/a/35071077/2526265참조하십시오.


인기 답변

Azure 테이블 스토리지 SDK 버전 8.0.0은 이미 열거 형 및 기타 많은 단순하고 복잡한 속성 유형을 지원하므로이 목적을 위해 추가 프레임 워크를 사용할 필요가 없습니다.

TableEntity.Flatten 메서드를 사용하여 POCO 개체를 간단하게 병합 할 수 있습니다. https://msdn.microsoft.com/en-us/library/azure/mt775435.aspx

테이블 스토리지에 병합 된 사전을 작성하십시오. EntityProperties 사전을 TableEntity.ConvertBack 메서드로 전달하면 읽을 수 있습니다. https://msdn.microsoft.com/en-us/library/azure/mt775435.aspx

Enum 및 다른 유형의 속성을 포함하여 원래 개체를 다시 구성합니다.

엔티티 클래스는 TableEntity 클래스에서 상속하거나 ITableEntity 인터페이스를 구현할 필요가 없으며 간단한 속성을 가진 POCO 개체 일 수도 있고 개체 그래프의 여러 레이어와 함께 자체적으로 복잡한 속성을 중첩 할 수도 있습니다. FlattenConvertBack 메서드는이 두 가지를 모두 지원합니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.