(Entity Framework 6, .NET 4, VS 2010)Entity Framework 1-To * и 1-на-1
Я создал небольшой блог проекта, чтобы проиллюстрировать эту проблему. Это блог, в котором много сообщений, но в качестве основного сообщения выступает только одна из должностей.
public class Blog
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Post> PostEntities { get; set; }
public int? MainPostId { get; set; }
[ForeignKey("MainPostId")]
public virtual Post MainPostEntity { get; set; } // Problem here
}
public class Post
{
public int Id { get; set; }
public int BlogId { get; set; }
[ForeignKey("BlogId")]
public virtual Blog BlogEntity { get; set; }
public string Title { get; set; }
}
modelBuilder.Entity<Blog>()
.HasOptional(b => b.MainPostEntity)
.WithRequired(p => p.BlogEntity);
static void Main(string[] args)
{
Database.SetInitializer<EFTestContext>(null);
EFTestContext db = new EFTestContext();
Post[] posts = db.Posts.ToArray(); // Error here
}
Если удалить свойство навигации public virtual Post MainPostEntity
все работает, как ожидалось. Однако, когда я добавляю его, я получаю:
base {System.SystemException} = {"The ForeignKeyAttribute on property 'MainPostEntity' on type 'EFTest.Blog' is not valid. The foreign key name 'MainPostId' was not found on the dependent type 'EFTest.Post'. The Name value should be a comma separated list of foreign key property names."}
Если удалить беглый вызова API, я получаю {"Invalid column name 'Blog_Id'."}
Если изменить атрибут из [ForeignKey("MainPostId")]
в [ForeignKey("Id")]
я получаю следующее сообщение об ошибке {"Invalid column name 'Blog_Id'."}
Что я делаю неправильно? Как включить свойство навигации из блога в главную почту?
Спасибо, это сработало! – Adam
Добро пожаловать, рад помочь. – user2697817