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

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

EF Core:使用鏈式屬性為復合 PK 的一部分定義外鍵

EF Core:使用鏈式屬性為復合 PK 的一部分定義外鍵

C#
Smart貓小萌 2022-12-31 12:48:20
我有以下模型:internal class SchemaEfEntity{    [Required]    [MaxLength(128)]    public string Name { get; set; }    [Required]    public DatabaseEfEntity Database { get; set; }}internal class DatabaseEfEntity{    [Required]    public string Name { get; set; }    [Required]    public InstanceEfEntity Instance { get; set; }    public ICollection<SchemaEfEntity> Schemas { get; set; }}internal class InstanceEfEntity : IEfIdEntity{    public long Id { get; set; }    [Required]    public string Name { get; set; }    public ICollection<DatabaseEfEntity> Databases { get; set; }}public sealed class MyDbContext : DbContext{        internal DbSet<InstanceEfEntity> Instances { get; set; }        internal DbSet<DatabaseEfEntity> Databases { get; set; }        internal DbSet<SchemaEfEntity> Schemas { get; set; }        protected override void OnModelCreating(ModelBuilder modelBuilder)        {            modelBuilder.Entity<InstanceEfEntity>().HasKey(x => x.Id);            modelBuilder.Entity<InstanceEfEntity>().HasIndex(x => x.Name).IsUnique();            modelBuilder.Entity<DatabaseEfEntity>().HasKey(                $"{nameof(DatabaseEfEntity.Instance)}{nameof(InstanceEfEntity.Id)}",                $"{nameof(DatabaseEfEntity.Name)}");            modelBuilder.Entity<SchemaEfEntity>().HasKey(                $"{nameof(SchemaEfEntity.Database)}{nameof(DatabaseEfEntity.Instance)}{nameof(InstanceEfEntity.Id)}",                $"{nameof(SchemaEfEntity.Database)}{nameof(DatabaseEfEntity.Name)}",                $"{nameof(SchemaEfEntity.Name)}");        }}SchemaEfEntity定義了一個由 ( InstanceId,DatabaseName和SchemaName)組成的復合 PK。但是在創(chuàng)建遷移時出現(xiàn)以下錯誤:表達式“c => c.Database.Instance”不是有效的屬性表達式。該表達式應表示一個簡單的屬性訪問:'t => t.MyProperty'。參數(shù)名稱:propertyAccessExpression有任何想法嗎?有可能嗎?有沒有辦法“手動”指定它,即不使用屬性鏈而只是將表和列指定為純文本?
查看完整描述

1 回答

?
哆啦的時光機

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

可以使用以下語法完成:


modelBuilder.Entity<SchemaEfEntity>()

    .HasOne(typeof(InstanceEfEntity))

    .WithMany()

    .HasForeignKey(

        $"{nameof(SchemaEfEntity.Database)}{nameof(DatabaseEfEntity.Instance)}{nameof(InstanceEfEntity.Id)}")

    .OnDelete(DeleteBehavior.Restrict);


查看完整回答
反對 回復 2022-12-31
  • 1 回答
  • 0 關(guān)注
  • 76 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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