如果我不在EF中明确使用外键会发生什么?

时间:2014-02-17 09:05:23

标签: sql entity-framework entity-framework-5 entity-framework-6

我正在研究我的重大项目。我遇到了一个问题,我有很多关系:

  1. “用户”表和“BlogPost”表。
  2. “用户”表和“标签”表。 我正在使用Entity Framework 6.0
  3. 这是我的代码......

    public class BlogPost
    {
        public int Id { get; set; }
        public string Text { get; set; }
    
        public ICollection<User> Users { get; set; }
    }
    
    public class Tag
    {
        public int Id { get; set; }
        public string TagName { get; set; }
    
        public ICollection<User> Users { get; set; }
    }
    
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    
        public ICollection<Tag> Intrests { get; set; }
    
        public ICollection<BlogPost> BlogPosts { get; set; }
    }
    

    如果我使用上面的代码,我会得到预期的架构。即 我有五张桌子。用户,BlogPost,标签,TagUser,UserBlogPost

    用户仅包含:Id,Name和Age。 TagUser和UserBlogPost包含User的主键及其自己的表,以及它们之间创建多对多的关系。

    如果我为My all Navigation属性显式创建外键属性,如下所示:

    public class BlogPost
    {
        public int Id { get; set; }
        public string Text { get; set; }
    
        public int UserId { get; set; }
        public ICollection<User> Users { get; set; }
    }
    
    public class Tag
    {
        public int Id { get; set; }
        public string TagName { get; set; }
    
        public int UserId { get; set; }
        public ICollection<User> Users { get; set; }
    }
    
    public class User
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    
        public int TagId { get; set; }
        public ICollection<Tag> Intrests { get; set; }
    
        public int BlogPostId { get; set; }
        public ICollection<BlogPost> BlogPosts { get; set; }
    } 
    

    我得到了不同的结果。 这里用户表包含:Id,Name,Age和TagId,BlogPostId。 和Tag和BlogPost表包含引用User表的外键。 它也有TagUser和UserBlogPost表。

    因此,如果我不在My Classes中创建外键属性,那么是否存在任何问题。我该如何处理这种情况? 请帮忙......

0 个答案:

没有答案