首先与实体框架代码建立多对多的关系

时间:2012-08-22 16:48:12

标签: entity-framework ef-code-first entity-framework-5

我有以下实体:

public class User : EntityBase
{
    [Required]
    [Key]
    public Guid Id { get; set; }
    public virtual ICollection<BlogEntry> BlogEntries { get; set; }
    public virtual ICollection<BlogEntry> [Name?] { get; set; } // User favourite blog entries
}

public class BlogEntry : EntityBase
{
    [Required]
    [Key]
    public Guid Id { get; set; }
    public virtual User User { get; set; }
    public virtual ICollection<User> [Name?] { get; set; } // Users who favourites blog entry
}

CREATE TABLE [dbo].[Favourites](
[BlogEntry_Id] [uniqueidentifier] NOT NULL,
[User_Id] [uniqueidentifier] NOT NULL,
)

如果我要遵循EF代码的第一个命名约定,在两种情况下都应该使用propoerty名称?收藏夹表的名称应该是UserFavourites吗?

如果问题与ICollection的命名无关,我应该如何指示EF从“收藏夹”表中加载用户收藏BlogEntry的用户列表和受用户青睐的BlogEntrie列表?

1 个答案:

答案 0 :(得分:0)

当你使用Code First时,你不应该自己创建表:让框架为你做。

只需在ICollection<User>中创建BlogEntry属性,在用户实体中创建ICollection<BlogEntry>。首先,请忽略User中的BlogEntry属性。然后,实体框架将为您创建联结表“UsersBlogEntries”。

当然还有更多内容,但这应该让你开始。在这个问题上,SO充满了优秀的答案。