2013-05-14 32 views
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。並給我錯誤:架構「dbo」不存在

如何在不創建MessagePhone模型類的情況下更改MessagePhone表的表格模式?

回答

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這裏來試試吧。

+0

它運作良好。日Thnx。 – Alamakanambra

+0

沒有VS的不錯努力:-) –

0

Have you tried it like this?

基本上你創建中間表自己,並有許多一對一的關係吧。這樣,你可以指定任何你喜歡的東西。當然,缺點是你不能像集合一樣處理關係。