0

エンティティ フレームワークでさらに問題が発生しています。そのうちの 1 つがここで解決されましたエンティティ フレームワーク 複数のテーブル 同じ名前

テーブルboまたはテーブルbiに挿入しようとすると、次のエラーが発生します。

{"列名 'Bo_obrano' が無効です。\r\n列名 'Bo_boano' が無効です。\r\n列名 'Bo_ndos' が無効です。"}

また

{"Invalid column name 'Bi_bistamp'}

電動工具を使用してデータベースをリバース エンジニアリングしたため、bo のマッピングは次のようになりました。

public boMap()
    {
    // Primary Key
    HasKey(t => new { t.obrano, t.boano, t.ndos });

     Property(t => t.obrano)
         .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
     Property(t => t.boano)
         .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
     Property(t => t.ndos)
         .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
    }

そして、このようなbiマッピング:

public BiMap()
        {
            // Primary Key
            HasKey(t => t.bistamp);
....

私のコンテキストクラスは次のようになります:

public class PHCDbContext:DbContext
    {
        //classes mapeadas via reverse
        public DbSet<Bi> DadosLinhasEncomendas { get; set; }
        public DbSet<Bo> DadosCabecalhosEncomendas { get; set; }
...

     public PHCDbContext(string connection):base(connection)
            {

                Database.SetInitializer<PHCDbContext>(null);
            }

            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Configurations.Add(new BiMap());
                modelBuilder.Configurations.Add(new boMap());
    ....

ここで指示されているように、マッピングを エクスポートしました: コードの最初のモデル マッピングをエクスポートします。

私が見つけたのは、それらのフィールド自体は存在しないということです。Visual Studio で edmx ファイルを開くと、これらのフィールドがクラスのナビゲーション プロパティ、モデルの関連部分にあることがわかりました。外部キーではなく、テーブルの主キーを表します。しかし、それらは poco クラスのどの値にもマッピングされていません。データベース内の任意の列にははるかに少ない。どうすればこれを解決できますか?事前に感謝します

4

2 に答える 2

1

ナビゲーションプロパティを削除して動作させました。テーブル間に相関関係がないためです。どちらも今のところ孤立しています。もう一度助けてくれてありがとう

于 2013-02-12T22:03:38.157 に答える
0

あなたの状況は少し変わっているように見えますが、データベースを見て列名を確認し、コンテキスト内でマップする必要があります。

protected override void OnModelCreating( DbModelBuilder modelBuilder )
{
    modelBuilder.Entity<Bi>( ).ToTable( "dbo.Bi" );
    modelBuilder.Entity<Bi>( ).Property( p => p.bistamp).HasColumnName("actualName" ); 
}
于 2013-01-31T21:05:05.033 に答える