簡體   English   中英

如何使用 Entity Framework Core 使用泛型枚舉遷移類?

[英]How to migrate a class using Generic enums with the Entity Framework Core?

您將如何使用實體框架將此 Car Class 遷移到數據庫?

我有一個 Main car 類(它繼承自 Car Interface Class),其中有一個名為 Part 的通用屬性

public class Car<Parts> : GenericCarInterface
{
    public Parts Part { get; set; }
}

然后我有幾個枚舉代表可以傳遞到 Car 類的 Generic Parts 屬性的不同部分

public enum VokswagenParts
{
    VWWheels,
    VWLights,
    VWEngine
}

public enum TyotaParts
{
    ToyotaSpoiler,
    ToyotaAirFilter,
    ToyotaBrakes
}

public enum FiatParts
{
    FiatExhaust,
    FiatSuspension,
    FiatCVOuter
}

我設想如下設置 ApplicationDbContext,但 EF 不知道如何制作 Part 屬性

public class ApplicationDbContext : DbContext
{
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"ConnectionStringHere");
    }

    public DbSet<GenericCarInterface> Cars { get; set; }
}

關於使用 Entity Framework Core 實現這一點的方法有什么想法嗎?

查看您的枚舉,看起來每個部分都有一個唯一的名稱。 如果您不介意您的零件是否分組,您可以將所有零件放在一個枚舉中。

public enum Parts {
    VWWheels,
    VWLights,
    VWEngine,
    ToyotaSpoiler,
    ToyotaAirFilter,
    ToyotaBrakes,
    FiatExhaust,
    FiatSuspension,
    FiatCVOuter
}

然后在你的汽車課上你可以這樣做

public Parts Parts { get; set; }

EF 應該能夠處理其余的。

我想我可能已經找到了解決方案。

如果我可以在我的存儲庫中創建一個單獨的類來保存枚舉數值和枚舉類型名稱:

public class Car
{
     public Guid CarId { get; set; }
     public Part Part { get; set; }
} 

public class Part
{
    public Guid CarId { get; set; }
    public Guid PartId { get; set; }
    public int Enum { get; set; }
    public string EnumName { get; set; }
}

然后我可以將該標准類持久化到數據庫中,然后在層之間傳輸之前簡單地將代碼重新編譯回原始 Car 類格式

我可能會為零件名稱創建一個單獨的枚舉,只是為了保持它的強類型,但我喜歡保留名稱而不僅僅是枚舉數字的想法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM