簡體   English   中英

指定的MVC C#模式無效

[英]MVC C# Schema specified is not valid

我正在使用帶有C#的Visual Studio 2015進行最終項目。 我正在做一個可用作Android游戲模擬器的應用,並且我有一些角色(models.Personaje)。 這些角色具有能力(BB),當我想進行遷移時,它會拋出:

指定的架構無效。 錯誤:由於類型'Projecte_Final.Models.BB'不可用,因此未加載關系'Projecte_Final.Models.Personaje_BB'。

我不知道我在做什么錯,這是BB和Personaje模型。

BB模型

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Projecte_Final.Models
{
    public class BB
    {
    public int ID { get; set; }
    //Habilidades de los personajes
    public String Nombre { get; set; }
    public String BBDesc { get; set; }

    //Rama del BB (Heal, Support o Atk)
    public int RamaBBID { get; set; }
    public virtual RamaBB RamaBB { get; set; }

    //Tipo del BB (BB, SBB, UBB)
    public int TipoBBID { get; set; }
    public virtual TipoBB TipoBB { get; set; }

    //Grupalidad del BB
    public int GrupalBBID { get; set; }
    public virtual GrupalBB GrupalBB { get; set; }

    public int NhitsBB { get; set; }
    public int DCBB { get; set; }
    public int CosteBB { get; set; }
    public int MultiplicadorBB { get; set; }

    public int EfectoBBID { get; set; }
    public virtual Efectos EfectoBB { get; set; }
    public virtual ICollection<Personaje> Personajes { get; set; }
    }
}

角色模型

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;

namespace Projecte_Final.Models
{
    public class Personaje
    {
    //Personaje del juego.

    //Datos generales
    public int Numero { get; set; }
    public String Nombre { get; set; }
    public int NivelMax { get; set; }
    public int Estrellas { get; set; }
    public int Coste { get; set; }

    public virtual ICollection<Stats> Stats { get; set; }

    //Elemento
    public int ElementoID { get; set; }
    public virtual Elemento Elemento { get; set; }

    //Genero
    public int GeneroID { get; set; }
    public virtual Genero Genero { get; set; }



    //Datos combate
    public int NHits { get; set; }
    public int DC { get; set; }


    //BB
    public int? BBID { get; set; }
    public virtual BB BB { get; set; }

    //SBB
    public int? SBBID { get; set; }
    public virtual BB SBB { get; set; }

    //UBB
    public int? UBBID { get; set; }
    public virtual BB UBB { get; set; }


    //Datos IMPS
    public int ImpHP { get; set; }
    public int ImpAtk { get; set; }
    public int ImpDef { get; set; }
    public int ImpRec { get; set; }


    //Descripciones extras
    public int? LSID { get; set; }
    public virtual LS LS { get; set; }

    public int? ESID { get; set; }
    public virtual ES ES { get; set; }


    //Pre i post evoluciones
    public int? PreEvoNum { get; set; }
    public virtual Personaje PreEvo { get; set; }
    public int? PostEvoNum { get; set; }
    public virtual Personaje PostEvo { get; set; }


    //Imágenes
    [NotMapped]
    public HttpPostedFileBase Imagen { get; set; }
    [NotMapped]
    public HttpPostedFileBase Icono { get; set; }
    [NotMapped]
    public HttpPostedFileBase Gif { get; set; }
    [NotMapped]
    public HttpPostedFileBase GifAtaque { get; set; }


    //Propiedad de navegacion propia
    public virtual ICollection<Personaje> Personajes { get; set; }

    //Propiedad de navegacion a Unidad
    public virtual ICollection<Unidad> Unidades { get; set; }
    }
}

這是BB和Personaje模型的db上下文的代碼:

//BB
        modelBuilder.Entity<BB>().HasKey(x => x.ID);
        modelBuilder.Entity<BB>().HasRequired(x => x.RamaBB).WithMany(x => x.BBRama).HasForeignKey(x => x.RamaBBID);
        modelBuilder.Entity<BB>().HasRequired(x => x.TipoBB).WithMany(x => x.BBTipo).HasForeignKey(x =>x.TipoBBID);
        modelBuilder.Entity<BB>().HasRequired(x => x.GrupalBB).WithMany(x => x.BBGrupal).HasForeignKey(x => x.GrupalBBID); 
        modelBuilder.Entity<BB>().HasRequired(x => x.EfectoBB).WithMany(x => x.BBEfectos).HasForeignKey(x => x.EfectoBBID); 

//Personaje
        modelBuilder.Entity<Personaje>().HasKey(x => x.Numero);
        modelBuilder.Entity<Personaje>().HasRequired(x => x.Elemento).WithMany(x => x.Personajes).HasForeignKey(x => x.ElementoID);
        modelBuilder.Entity<Personaje>().HasRequired(x => x.Genero).WithMany(x => x.Personajes).HasForeignKey(x => x.GeneroID);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.BB).WithMany(x => x.Personajes).HasForeignKey(x => x.BBID);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.SBB).WithMany(x => x.Personajes).HasForeignKey(x => x.SBBID);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.UBB).WithMany(x => x.Personajes).HasForeignKey(x => x.UBBID);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.ES).WithMany(x => x.Personajes).HasForeignKey(x => x.ESID);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.LS).WithMany(x => x.Personajes).HasForeignKey(x => x.LSID);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.PreEvo).WithMany(x => x.Personajes).HasForeignKey(x => x.PreEvoNum);
        modelBuilder.Entity<Personaje>().HasOptional(x => x.PostEvo).WithMany(x => x.Personajes).HasForeignKey(x => x.PostEvoNum);

希望您能幫助我,謝謝。

嘗試更新模型,因為您可能首先創建了模型,然后對數據庫進行了一些更改,而不是再次更新模型。

我以前也有類似的問題。 因為項目僅在我的本地上,所以我去了數據庫,刪除了MigrationHistory表,還刪除了所有遷移類,然后再次執行遷移-所以基本上我已經創建了新的Initial遷移。

當您刪除遷移歷史記錄時,EF將無法將您的當前模型與以前的版本進行比較,並且您的當前狀態基本上是“初始”狀態。

注意

我的數據庫中沒有任何關鍵數據,並且能夠做到這一點。 所以要小心 不推薦使用此解決方案,但可以完成此工作,尤其是在開始項目或准備起點的情況下。

有關更多信息,我可以推薦這篇文章:

重置實體框架遷移

我找到了解決方案,因為我和BB和Personaje之間有三重關系:

//Personaje Model
        //BB
    public int? BBID { get; set; }
    public virtual BB BB { get; set; }

    ////SBB
    public int? SBBID { get; set; }
    public virtual BB SBB { get; set; }

    ////UBB
    public int? UBBID { get; set; }
    public virtual BB UBB { get; set; }

但我有:

//BB Model
public virtual ICollection<Personaje> Personajes { get; set; }

它必須是:

//BB Model
    public virtual ICollection<Personaje> PersonajesBB { get; set; }
    public virtual ICollection<Personaje> PersonajesSBB { get; set; }
    public virtual ICollection<Personaje> PersonajesUBB { get; set; }

因為如果模型對同一個實體具有多個外鍵,則每個外鍵必須具有各自的反向導航屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM