3

次のような M:N 関係のモデルがあります。

[Table("Messages", Schema = "public")]
public class Message
{

    public int Id  { get; set; }
    public virtual IList<Phone> Phones{ get; set; }

}

[Table("Phones", Schema = "public")]
public class Phone
{

    public int Id  { get; set; }
    public virtual IList<Message> Messages{ get; set; }

}

したがって、EFは私のために中間テーブルを生成します...しかし、テーブルのデフォルトのスキーマは公開されていません(私が必要とするものです)が、それでもdboです。エラーが表示されます: schema "dbo" does not exist

MessagePhone モデル クラスを作成せずに、MessagePhone テーブルのテーブル スキーマを変更するにはどうすればよいですか?

4

2 に答える 2

2

実行可能だと思います。DbContext クラスの OnModelCreating をオーバーライドし、流れるような API で構成する必要があります。

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
     modelBuilder.Entity<Message>().HasMany<Phone>(m => m.Phones).WithMany(p => p.Messages).Map
           (
            x =>
               {
                  x.ToTable("MessagePhone", "public");
               }
           );
 }

これをテストする必要があります。すべての構文が正しいかどうかはわかりません。試すためにVSをここに持っていないでください。

于 2013-05-14T23:12:59.670 に答える
0

このように試してみましたか?

基本的に、自分で中間テーブルを作成し、それに対して多対 1 の関係を持ちます。そうすれば、好きなものを指定できます。もちろん、欠点は、コレクションのように関係を処理できないことです。

于 2013-05-14T23:13:00.130 に答える