2016-05-12 10 views
0

私はC#でVisual Studio 2015で最終プロジェクトを進めています。 私はAndroidゲームのシミュレータとして動作するアプリをやっています。私はいくつかのキャラクター(models.Personaje)を持っています。これらのキャラクターには能力(BB)があり、移行を実行したいときにスクロールします:指定されたMVC C#スキーマが無効です

指定されたスキーマは無効です。エラー:タイプ '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; } 
    } 
} 

Personajeモデル

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ためデシベルコンテキスト用のコードです:

//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); 

Iあなたがヘルできることを願ってp私、ありがとう。

答えて

0

私は、解決策を見つけた私は、私が持っていた原因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; } 

そしてそれはmu stがあること:

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

モデルは、同じエンティティへの1つの以上の外部キーを持っているのであれば、それぞれの外部キーは、それぞれ逆のナビゲーションプロパティを持っている必要があります。

0

モデルを最初に作成した後にデータベースに変更を加え、モデルを再度更新しなかった可能性があるため、モデルを更新してみてください。

0

私はこれまで同様の問題がありました。プロジェクトは私のローカルにしかなかったので、私はdbに移動し、MigrationHistoryテーブルを削除し、すべてのマイグレーションクラスを削除して、再度マイグレーションを実行しました。

移行履歴を削除すると、EFは現在のモデルを以前のバージョンと比較することはできず、現在の状態は基本的に「初期状態」になります。

私は私のデータベース内のすべての重要なデータを持っていなかったと私はそれを行うことができました。ので注意してください。これは推奨される解決策ではありませんが、特にあなたがプロジェクトを開始したり、出発点を準備している場合は、仕事をします。詳細情報については

私はこのポストをお勧めすることができます:

Reset Entity-Framework Migrations

関連する問題