Член с идентификатором «PmData.SafetyRequirement_Assets» не существует в коллекции метаданных.\r\nИмя параметра: идентификатор

Я пытаюсь обновить запись в своей системе. Все в модели отлично сохраняется, кроме любого из моих отношений типа «многие ко многим» в форме. Когда я добираюсь до тех, что в моей модели, это дает мне ошибку. «Член с идентификатором« PmData.SafetyRequirement_Assets »не существует в коллекции метаданных.\r\nИмя параметра: идентификатор». Я прочитал некоторые другие ответы, но у меня нет триггеров в моей базе данных, и я внес несколько изменений в свою модель на основе других предложений, и, похоже, это ничего не меняет. Проект находится в vNext.

Вот моя первая модель

public partial class Asset : DataModel
{
    [Required]
    [StringLength(64)]
    public string Name { get; set; }
    [StringLength(256)]
    public string Description { get; set; }
    [StringLength(1024)]
    public string SystemFunction { get; set; }
    [StringLength(2048)]
    public string Remarks { get; set; }
    public bool IsSystem { get; set; }
    public bool IsGrouping { get; set; }
    [StringLength(128)]
    public string FieldTag { get; set; }
    [ForeignKey("Parent")]
    public int? ParentId { get; set; }
    [ForeignKey("Building")]
    public int? BuildingId { get; set; }
    public bool IsOperable { get; set; }
    public bool IsAvailable { get; set; }
    public virtual Asset Parent { get; set; }
    public virtual Building Building { get; set; }
    public virtual ICollection<Asset> Children { get; set; }
    public virtual ICollection<DrawingReference> DrawingReferences { get; set; }
    public virtual ICollection<SpecReference> SpecReferences { get; set; }
    public virtual ICollection<SafetyRequirement> SafetyRequirements { get; set; }
    public virtual ICollection<SupportSystem> SupportSystems { get; set; }
}

Модель для одной другой таблицы со многими ко многим.

public partial class SafetyRequirement : DataModel
    {
        [StringLength(256)]
        [Required]
        public string Name { get; set; }
        [StringLength(2048)]
        public string SafetyFunction { get; set; }
        [StringLength(2048)]
        public string FunctionalRequirements { get; set; }
        [StringLength(2048)]
        public string SystemBoundary { get; set; }
        [StringLength(255)]
        public string Reference { get; set; }
        [ForeignKey("QualityLevel")]
        public int QualityLevelId { get; set; }
        public virtual QualityLevel QualityLevel { get; set; }
        public virtual ICollection<Asset> Assets { get; set; }
    }

Карта для соединительного стола

modelBuilder.Entity<Asset>().HasMany(t => t.SafetyRequirements)
    .WithMany(t => t.Assets)
    .Map(m =>
    {
       m.MapRightKey("SafetyRequirementId");
       m.MapLeftKey("AssetId");
       m.ToTable("AssetSafetyRequirement");
    });

Наконец, вот область, в которой он терпит неудачу...

public virtual void SaveAsync(TEntity model)
{
    Task.Run(() =>
    {
        using (
            var dbContext =
                (TContext)
                Activator.CreateInstance(typeof (TContext),
                ConfigOptions == null ? ConfigService.ConnectionString : ConfigOptions.ConnectionString))
        {
            var dbSet = dbContext.Set<TEntity>();
            dbSet.Attach(model);
            dbContext.Entry(model).State = EntityState.Modified;
            dbContext.SaveChanges();
        }
    });
}

Любая информация или указатели будут весьма признательны.


person jacobjp52285    schedule 27.05.2016    source источник


Ответы (1)


Вы пытаетесь использовать как Fluent API, так и аннотации данных, чтобы определить отношения между вашими таблицами. Удаляйте то одно, то другое.

person Bryan Morgan    schedule 31.05.2016
comment
Это сработало! Взял это, повторно запустил мою миграцию, и она начала вставать на свои места. - person jacobjp52285; 31.05.2016