1

単純なマッピングに問題があります (EF 4.3.1 を使用 - コード ファースト アプローチ)

public class Someclass
    {
        public virtual int ID { get; set; }
        public virtual string Name { get; set; }
    } 

また、int IDと varchar someclass_nameを持つ表someclass。今私がやりたいことは、Namesomeclass_nameにマップすることです

 modelBuilder.Entity<Someclass>()
             .Property(r => r.Name).HasColumnName("someclass_name");

しかし、id は機能せず、例外は次のように述べています。

私もそれをやってみました:

modelBuilder.Configurations.Add(new SomeclassMap());

public class SomeclassMap : EntityTypeConfiguration<Someclass>
    {
        public SomeclassMap() {
          //  this.Property(r => r.Name).HasColumnName("someclass_name");
            Map(r =>
            {
                Property(m => m.Name).HasColumnName("restaurant_name");
            });
        }
    }

誰かが私が間違っていることを教えてもらえますか? THX

4

4 に答える 4

1

EF 4.3 の移行ユーティリティを使用する必要があります。エラーは、データベースが構築されてからモデルが変更され、更新する必要があることを通知しています。このリンクをチェックしてください: http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

于 2012-05-12T15:19:49.620 に答える
0

移行通知を回避できるかどうかはわかりませんが、 Name プロパティに [Column("someclass_name")] を追加してみてください。

プロパティを別の名前の列にマップするというセクションを参照してください。

于 2012-05-12T16:56:22.623 に答える
0

EF 5 をインストールしましたが、これと同じ問題がありました。私が「発見」したのは、

[Column("名前")]
public string Name1 { get; 設定; }

Name1がDBのフィールド「 Name」を指していることを意味します。したがって、フィールド名を変更せず、クラスのプロパティ名を変更し、この「Name1」が「Name」を指していることをEFに知らせました。少し奇妙なアプローチですが、このように機能します。DB はおそらくどこかに DB ハッシュを書き留めて、それが変化するかどうかをチェックします。しかし、どこにあるのかはまだわかりません。

于 2012-05-13T08:41:15.930 に答える
0

私は解決策を見つけました:

Database.SetInitializer<SomeDB>(null);

データベース コンテキスト チェックをオフにする必要があります。

于 2012-05-13T11:02:26.557 に答える