亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Entity Framework Core 2/C# 中實現簡單的“復雜類型”?

如何在 Entity Framework Core 2/C# 中實現簡單的“復雜類型”?

C#
江戶川亂折騰 2021-06-27 20:08:34
我第一次使用 Entity Framework 和 .Net Core 2.0(我對 C# 也很陌生,但我從版本 1 開始就一直在使用傳統的 .Net Framework 和 VB ......所以我不是新手到 .Net 開發),并且我已經遇到了創建數據庫的問題。以這個簡單的場景為例:我想存儲一些關于一些電動泵的信息。其中兩個屬性是最小/最大類型范圍,因此我將它們實現為一個簡單的類,因此:public class Pump{    [Key]    public int pumpId { get; set; }    public string pumpName { get; set; }    public int pumpControlChannel { get; set; }    public MinMax normalCurrent { get; set; }    public MinMax normalFlowRate { get; set; }}[ComplexType]public class MinMax{    public int min { get; set; }    public int max { get; set; }}如您所見,我嘗試了[ComplexType]裝飾器,但無濟于事。無論如何,現在創建一個簡單的 DBContext 類來管理我的 Pumps 類。我正在使用 Sqlite:public class EFDB : DbContext{    public DbSet<Pump> pumps { get; private set; }    private static DbContextOptions GetOptions(string connectionString)    {        var modelBuilder = new DbContextOptionsBuilder();        return modelBuilder.UseSqlite(connectionString).Options;    }    public EFDB(string connectionString) : base(GetOptions(connectionString)) { }    protected override void OnModelCreating(ModelBuilder modelBuilder)    {        try        {            // modelBuilder.ComplexType<MinMax>();      // ComplexType not recognised            base.OnModelCreating(modelBuilder);        }        catch (Exception ex)        {            System.Diagnostics.Debugger.Break();        }    }}最后一個簡單的靜態類來調用它(我將它嵌入到一個更大的程序中......要復制這個問題,你可以將代碼行粘貼到 program.cs 中):public static class TryMe{    public static void MakeMeFail()    {        using (var db = new EFDB("FileName=C:\\temp\\test_effail.db"))        {            try            {                db.Database.EnsureCreated();            }            catch (Exception ex)            {                System.Diagnostics.Debugger.Break();   // If we hit this line, it fell over            }        }        System.Diagnostics.Debugger.Break();   // If we hit this line, it worked.    }}只需調用TryMe.MakeMeFail(),代碼就會失敗db.Database.EnsureCreated()。從我讀過的所有內容來看,[ComplexType]應該做我想做的……但事實并非如此。我也找不到modelBuilder.ComplexType<T>任何地方。
查看完整描述

1 回答

  • 1 回答
  • 0 關注
  • 137 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號