2009-12-23 6 views
1

Является ли это способом использования кода структуры Entity Framework. Только для того, чтобы иметь сущность, которая имеет поля из двух таблиц, если обе таблицы не содержат первичный ключ?Разделение сущностей только с кодом

Вот пример.

public class BlogPost 
{ 
    public int PostID { get; set; } 
    public String PostBody { get; set; } 
    public int UserID { get; set; } 
    public string Username { get; set; } 
} 

public class User 
{ 
    public int UserID { get; set; } 
    public String Username { get; set; } 
} 

public class BlogPostConfiguration : EntityConfiguration<BlogPost> 
{ 
    public BlogPostConfiguration() 
    { 
     HasKey(b => b.PostID); 
    } 
} 

public class UserConfiguration : EntityConfiguration<User> 
{ 
    public UserConfiguration() 
    { 
     HasKey(b => b.UserID); 
    } 
} 

Я хочу Имя пользователя свойство объекта BlogPost быть отображен в поле пользователя таблицы пользователя. Я могу сделать сопоставление с использованием внешнего ключа с помощью конструктора, но я не уверен, как это сделать, используя только код. Я попытался использовать два оператора MapHierarchy в моем объекте конфигурации, но похоже, что это работает только в том случае, если обе таблицы имеют один и тот же первичный ключ.

+1

Вы видели это http://microsoftpdc.com/Sessions/FT10 демо о EF от pdc09? если нет - взгляните на него. –

+0

Спасибо, Александр, это видео было замечательно, но, к сожалению, он не рассматривал Entity Splitting. Очень рекомендуется смотреть, хотя для тех, кто попадает в EF. – TonyB

ответ

0

Я не думаю, что это возможно при текущем состоянии Entity Framework.

Для того, чтобы сделать разбиение объектов, вы должны иметь сопоставление от 1 до 1 (первичный ключ должен быть в обеих таблицах).

Я ошибался в своих поисках, полагая, что, поскольку вы можете добавить столбцы из второй таблицы в конструкторе, что код действительно будет работать. Я получаю очень похожую ошибку при попытке сделать сопоставление в EDMX, как и при использовании Code-Only.