0

我正在使用教程中的代码来尝试我在实际项目中需要的东西。我有一张桌子,里面DataBase有很多(16)Foreign Keys我必须重新创建整个DataBase使用ADO.NET EF,现在我对这种特殊情况几乎没有任何兴趣。这是我用于测试目的的代码:

public class Blog
    {
        public int BlogId { get; set; }
        public string Name { get; set; }
        public string Url { get; set; }

        public int UserId { get; set; }
        public virtual User User { get; set; }

        public virtual List<Post> Posts { get; set; }
    }

    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        //public int BlogId { get; set; }
        public virtual Blog Blog { get; set; }

        //public int BlogId1 { get; set; }
        public virtual Blog Blog1 { get; set; }

        //public int BlogId2 { get; set; }
        public virtual Blog Blog2 { get; set; }

        //public int BlogId3 { get; set; }
        public virtual Blog Blog3 { get; set; }

        //public int BlogId4 { get; set; }
        public virtual Blog Blog4 { get; set; }
    }

我已经评论了这些int属性,因为我似乎不需要它们。执行此代码,我得到以下信息:

在此处输入图像描述

所以目前有两件事让我担心 - 这是Foreign Keys在一张桌子上添加多个的方法吗?如果是这样 - 两行用红色下划线 - 为什么我有Blog_BlogId并且Blog_BlogId1在我得到预期之前Blog1_.., Blog2_...

4

1 回答 1

0

好的,我在这里丢失了从那里获得解决方案的帖子,但在这种特殊情况下,它似乎是某种命名约定,我必须取消注释注释代码并更改名称而不使用数字或下划线。然后OnModelCreating根据需要多次添加此代码:

modelBuilder.Entity<Post>().HasRequired(c => c.Blog)
                                  .WithMany(m => m.Posts)
                                  .HasForeignKey(c => c.BlogId)
                                  .WillCascadeOnDelete();

            modelBuilder.Entity<Post>().HasRequired(c => c.Blogged)
                                          .WithMany()
                                          .HasForeignKey(c => c.BloggedId)
                                          .WillCascadeOnDelete(false);

请注意,每次为外键添加新记录时,我都会更改属性名称和类实例名称。

于 2013-02-20T06:39:19.313 回答