2017-02-27 63 views
3

我有一個稱爲BigDataOverview的數據庫模式。我的大部分應用程序已連接到稱爲AdminDb的不同架構。爲.Net核心中的DevOps創建控制器

我還有一個與我的AdminDb模式很好地集成的.Net核心應用程序。

我的輔助模式有13個不同的表,它們以數字命名爲名稱和一個名爲「SimpleDataOverview」的表。

我現在想要將這個輔助模式添加到我的應用程序中,以便我可以將{ get; }的數據顯示在我的應用程序中。

我已經建立了我的ConnectionString在我appsettings.json

"ConnectionStrings": { 
    "DefaultConnection":"server=<placeholder>;database=AdminDB;sslmode=none;", 
    "OverviewDataConnection": "server=<placeholder>;database=BigDataOverview;sslmode=none;" 
} 

所有具有數字作爲名稱中的字段(列)而言是彼此相同的13個表。因此,我創建了一個模型,以匹配所有的人:NumberTableModel.cs

public class NumberTableModel 
{ 
    [Key] 
    public int RowID { get; } 

    public int SensorID { get; } 
    public DateTime ReadingDate { get; } 
    public int ReadingCount { get; } 
    public float ApproxDataSize { get; } 
    public Time ReadingTime { get; } 
    public string JsonData { get; } 
    public long LastUpdate { get; } 
    public string Source { get; } 
} 

我還創建了一個的DbContext:DevOpsDbContext

public class DevOpsDbContext : DbContext 
{ 
    public DevOpsDbContext(DbContextOptions<DevOpsDbContext> options) : base(options) 
    { 
    } 

    public DbSet<NumberTableModel> _353224061929963 { get; set; } 
    public DbSet<NumberTableModel> _353224061929964 { get; set; } 
    public DbSet<NumberTableModel> _353224061929965 { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<NumberTableModel>().ToTable("353224061929963"); 
     modelBuilder.Entity<NumberTableModel>().ToTable("353224061929964"); 
     modelBuilder.Entity<NumberTableModel>().ToTable("353224061929965"); 
    } 
} 

而且我已經設置了我Startup.cs

services.AddDbContext<DevOpsDbContext>(options => 
    options.UseMySql(Configuration.GetConnectionString("OverviewDataConnection"))); 

enter image description here

然而,當我嘗試創建一個美景Controller,使用實體框架,Visual Studio將與以下錯誤消息抱怨:

enter image description here

而且我相信我做的....我非常感謝您的幫助。

回答

2

我不認爲你可以在EF中使用一個具有多個表的類。也許這是你的錯誤的來源? 嘗試通過表創建一個父類和一個孩子:

public abstract class NumberTableModel 
{ 
    [Key] 
    public int RowID { get; } 

    public int SensorID { get; } 
    public DateTime ReadingDate { get; } 
    public int ReadingCount { get; } 
    public float ApproxDataSize { get; } 
    public Time ReadingTime { get; } 
    public string JsonData { get; } 
    public long LastUpdate { get; } 
    public string Source { get; } 
} 

public class NumberTableModel1 : NumberTableModel { } 

public class NumberTableModel2: NumberTableModel { } 

public class NumberTableModel3: NumberTableModel { } 

而在你DevOpsDbContext

public class DevOpsDbContext : DbContext 
{ 
    public DevOpsDbContext(DbContextOptions<DevOpsDbContext> options) : base(options) 
    { 
    } 

    public DbSet<NumberTableModel1> _353224061929963 { get; set; } 
    public DbSet<NumberTableModel2> _353224061929964 { get; set; } 
    public DbSet<NumberTableModel3> _353224061929965 { get; set; } 

    protected override void OnModelCreating(ModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<NumberTableModel1>().ToTable("353224061929963"); 
     modelBuilder.Entity<NumberTableModel2>().ToTable("353224061929964"); 
     modelBuilder.Entity<NumberTableModel3>().ToTable("353224061929965"); 
    } 
} 
+0

我,只要我有時間嘗試了這一點。謝謝!如果它解決了問題,我會告訴你。 – Zeliax

相關問題