Проблема с определением отношений в EF Code First?Asp.Net MVC 3 - PullRequest
1 голос
/ 12 сентября 2011

у меня есть четыре модели .. Пользователь, запись, тег, комментарий ... отношения, которые я хочу иметь с кодом EF, сначала

1) 1 пользователь может иметь много сообщений, может создавать много тегов, может иметь много комментариев 2) В одном сообщении может быть 1 пользователь, много комментариев и много тегов. 3) 1 тег может иметь 1 пользователя, много постов 4) 1 комментарий может иметь 1 пользователь, 1 запись

через Google, я зашел так далеко ... но я уверен, что это не правильно ... пожалуйста, помогите ..

Обновлено отображение

 modelBuilder.Entity<User>().HasMany(p => p.Posts).WithRequired(u => u.Users);
        modelBuilder.Entity<User>().HasMany(t => t.Tags).WithRequired(u => u.Users);
        modelBuilder.Entity<User>().HasMany(c => c.Comments).WithRequired(u => u.Users);

        modelBuilder.Entity<Post>().HasRequired(u => u.Users);
        modelBuilder.Entity<Post>().HasMany(t => t.Tags).WithMany(p => p.Posts);
        modelBuilder.Entity<Post>().HasMany(c => c.Comments);

        modelBuilder.Entity<Comment>().HasRequired(u => u.Users);
        modelBuilder.Entity<Comment>().HasRequired(p => p.Posts);

        modelBuilder.Entity<Tag>().HasRequired(u => u.Users);
        modelBuilder.Entity<Tag>().HasMany(p => p.Posts).WithMany(t => t.Tags);

пожалуйста, помогите.

1 Ответ

2 голосов
/ 12 сентября 2011

Если у одного пользователя может быть много постов, а у поста может быть один пользователь, ваши сущности должны быть подготовлены для этого.

public class User 
{
    ...
    public virtual ICollection<Post> Posts { get; set; }
}

public class Post
{
    ...
    public virtual User { get; set;}
    public virtual ICollection<Tag> { get; set; }
}

public class Tag
{
    ...
    public virtual ICollection<Post> Posts { get; set; }
}

Если вы правильно определили свои сущности, вам следует составить правильное сопоставление с соглашениями по умолчанию. Если вы все еще хотите отобразить его с помощью API, вы должны использовать:

modelBuilder.Entity<User>().HasMany(u => u.Posts).WithRequired(p => p.User);

Это означает, что у одного пользователя может быть много сообщений, а в сообщении должен быть один пользователь. Это отображение 1-N. Для тегов и записей вам необходимо сопоставление M-N:

modelBuilder.Entity<Tag>().HasMany(t => t.Posts).WithMany(p => p.Tags);

Это означает, что в одном теге может быть много сообщений, а в сообщении может быть много тегов.

Вы будете сопоставлять другие отношения таким же образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...