第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

從 .NET 4.5 遷移到 .NET Core 2.2 后如何“重新復數(shù)化”數(shù)據(jù)庫表?

從 .NET 4.5 遷移到 .NET Core 2.2 后如何“重新復數(shù)化”數(shù)據(jù)庫表?

C#
明月笑刀無情 2022-12-31 13:54:47
我有一個項目要從 .NET 4.5 遷移到 .NET Core,出于某種原因(我不記得了),我想在運行時防止表名復數(shù)化update-database(.NET 4.5) :public class UncoveredLink : DbContext{    //removed constructor for brevity    public DbSet<Album> Albums { get; set; }    public DbSet<Artist> Artists { get; set; }    protected override void OnModelCreating(DbModelBuilder modelBuilder)    {        //the line I'm talking about is here        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();    }}因此,當我在 SQL Management Studio 中查看我的數(shù)據(jù)庫時,我看到以下內容://what I seedbo.Albumdbo.Artist//what i wantdbo.Albumsdbo.Artists我相信缺少復數(shù)是導致我嘗試加載頁面時出現(xiàn)此錯誤的原因:SqlException: Invalid object name 'Albums'.//further down the stack trace i seeUnLink.Services.AlbumService.GetAlbumByStringExt(string stringExt) in AlbumService.csalbum = _db.Albums.Where(x => x.StringExt == stringExt).FirstOrDefault();看?我正在嘗試調用_db.Albums,但我相信我不能這樣做,因為該表沒有復數(shù)并且我的核心上下文沒有OnModelCreating像我的 .NET 4.5 那樣的復數(shù)(似乎無法添加它)。我在 .NET Core 2.2 中的新 DbContext 如下所示:public class ApplicationDbContext : IdentityDbContext{    public DbSet<Album> Albums { get; set; }    public DbSet<Artist> Artists { get; set; }    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)        : base(options)    {    }}如何更新表名?我的核心 DbContext 中的表(如上所示)已經(jīng)復數(shù)化,因此我無法更改將被跟蹤的 DbContext 以獲取新的add-migration......我是否只是手動創(chuàng)建一個遷移文件并更新表名,如:migrationBuilder.RenameTable(name: "Artist", schema: "dbo", newName: "Artists", newSchema: "dbo");我認為為代碼中實際未更改/跟蹤的內容創(chuàng)建遷移不是好的做法?
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經(jīng)驗 獲得超6個贊

我認為這會有所幫助:


    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)

            : base(options)

    {

          modelBuilder.Entity<Album>()

                        .ToTable("Album");

    }

另一種方法是:


[Table("Album")]

 public class Album

    {

        public int AlbumId { get; set; }

        public string Name { get; set; }

    }


查看完整回答
反對 回復 2022-12-31
?
慕尼黑5688855

TA貢獻1848條經(jīng)驗 獲得超2個贊

好吧,您已經(jīng)對代碼進行了更改,因為您曾經(jīng)有那行 about Remove<Pluralizing>,但現(xiàn)在沒有了。不幸的是,Add-Migration可能不會接受此更改,尤其是當您同時轉換為 .Net Core 時。

由于您的模型與您的表不匹配,您有以下選擇:

  1. 手動創(chuàng)建更改表名的遷移:

migrationBuilder.RenameTable("Album", newName: "Albums");

或 2. 直接向 SQL 中的 Db 寫入查詢以更改表名:

EXEC sp_rename 'dbo.Album', 'dbo.Albums';


查看完整回答
反對 回復 2022-12-31
?
catspeake

TA貢獻1111條經(jīng)驗 獲得超0個贊

EF Core 2.0 引入了一個新的 IPluralizer 服務,用于單數(shù)化實體類型名稱和復數(shù)化 DbSet 名稱。

也許你可以調查一下。這里有很多關于這個的帖子或者這里有一篇關于那個的博客文章


查看完整回答
反對 回復 2022-12-31
  • 3 回答
  • 0 關注
  • 157 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號