2013-05-14 46 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?

基本上你创建中间表自己,并有许多一对一的关系吧。这样,你可以指定任何你喜欢的东西。当然,缺点是你不能像集合一样处理关系。