2010-06-29 46 views
0

我在實體框架4中使用代碼優先,實體框架功能CTP 3如何指定實體配置的名稱

是否可以指定實體配置的名稱?實際上將表名從'xxxSet'更改爲我選擇的名稱?

+1

此功能是在CTP 2中引入的。除了ADO.NET團隊博客注意到您可以執行此操作外,我沒有在任何地方看到任何文檔。 – 2010-06-30 13:41:10

回答

1

Found the documentation。你想要做的事情如下:

public class BloggingModel : ObjectContext 
{ 
    public BloggingModel(EntityConnection connection) 
     : base(connection) 
    { 
     DefaultContainerName = "BloggingModel"; 
    } 

    public IObjectSet<User> Users // ObjectSet name -- you can call it whatever you want 
    { 
     get { return base.CreateObjectSet<User>(); } 
    } 
} 

class UserConfiguration : EntityConfiguration<User> 
{ 
    public UserConfiguration() 
    { 
     Property(u => u.Password).HasMaxLength(15).IsRequired(); 

     Relationship(u => u.AuthoredPosts).FromProperty(p => p.Author); 
     Relationship(u => u.PostedPosts).FromProperty(p => p.Poster); 

     MapHierarchy( 
      u => EntityMap.Row( 
       EntityMap.Column(u.ID, "uid"), 
       EntityMap.Column(u.Password) 
      ) 
     ).ToTable("Users"); // DB table name -- again, anything you like 
    } 
} 

再次,請參閱鏈接的帖子以獲取完整信息。

+0

是的,我以前見過這個。但事情是我不使用MapHierarchy。在文檔上。謝謝 – Jeroen 2010-06-30 15:30:01

0

據我記憶,你可以從設計者改變它是Visual Studio(簡單的方法)或.edmx文件(如果你知道你在那裏做什麼)。另外,請嘗試更新到大約2個月前發佈的.NET 4.0和EF4,以便忘記CTP(可以免費使用Visual C#2010或Web Developer 2010的快速版本)。這個版本的設計師比CTP更「完整」,並且更好地自動命名實體(複數)。

這與EF有關,而不是Linq2Sql(與EF有點類似),但我不知道如何改變那裏的名字(儘管肯定有一種方法是肯定的,而且必須是非常與EF相同)。

乾杯!

+0

請再次閱讀我的文章。我添加了其他信息。 我沒有使用設計器,僅使用實體框架功能CTP3的代碼優先。 – Jeroen 2010-06-29 22:09:14

+0

抱歉誤會...我的不好在這裏!我還沒有用EF第一代碼(只有DB第一),所以我不知道這個答案... – Padel 2010-06-29 22:12:05