Entity Framework с нулевыми внешними ключами в начальном коде

#c# #sql-server #asp.net-mvc #entity-framework

#c# #sql-сервер #asp.net-mvc #entity-framework

Вопрос:

Я пытаюсь понять, что здесь происходит. Когда я заполняю свою базу данных, мой внешний ключ, который он генерирует, всегда равен нулю. Моя модель проста:

 public class PnlTarget
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int PnlTargetId { get; set; }


    public ReferenceAsset Underlyer { get; set; }
    public decimal Target { get; set; }

    public virtual PnlSettings PnlSettings { get; set; }


}

public class PnlSettings
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int PnlSettingsId { get; set; }

    public ColloquialType Type { get; set; }

    public virtual PnlTarget SPTSX60 { get; set; }
    public virtual PnlTarget SPTXLVPR { get; set; }
    public virtual PnlTarget STBANKX { get; set; }
    public virtual PnlTarget SX5E { get; set; }
    public virtual PnlTarget RTY { get; set; }
    public virtual PnlTarget SPX { get; set; }

    [DataType(DataType.DateTime)]
    public DateTime LastEdited { get; set; }

    public string LastEditedBy { get; set; }

}
 

Итак, это отношение 1 .. 0 ко многим. Когда я заполняю его чем-то вроде этого:

  PnlSettings vanillaAccelerator = new PnlSettings
        {
            PnlSettingsId = 1,
            Type = ColloquialType.VanillaAccelerator,
            RTY = new PnlTarget {Underlyer = ReferenceAsset.RTY, Target = (decimal) 0.004},
            SPX = new PnlTarget {Underlyer = ReferenceAsset.SPX, Target = (decimal) 0.004},
            SPTSX60 = new PnlTarget { Underlyer = ReferenceAsset.SPTSX60, Target = (decimal)0.004},
            SPTXLVPR = new PnlTarget { Underlyer = ReferenceAsset.SPTXLVPR, Target = (decimal)0.004},
            STBANKX = new PnlTarget { Underlyer = ReferenceAsset.STBANKX, Target = (decimal)0.004},
            SX5E = new PnlTarget { Underlyer = ReferenceAsset.SX5E, Target = (decimal)0.004},
            LastEdited = DateTime.Now,
            LastEditedBy = "SEED"
        };
 

Мое свойство внешнего ключа всегда равно null, как показано здесь . Я попытался реализовать свойство внешнего ключа вручную, используя аннотацию [ForeignKey], но, к сожалению, он по-прежнему генерирует этот нулевой столбец. Предназначено ли это?

введите описание изображения здесь

Спасибо!

Комментарии:

1. Настроили ли вы свои отношения в базе данных?

2. каково ваше отображение? чтобы это сработало, я думаю, вам придется сопоставить свойство обратной навигации.