Asp.net mvc 2 创建自己的POCO类是行不通的。指定的错误架构无效

Asp.net mvc 2 创建自己的POCO类是行不通的。指定的错误架构无效,asp.net-mvc-2,entity-framework-4,poco,Asp.net Mvc 2,Entity Framework 4,Poco,当我尝试创建我自己的POCO类时,我得到了这个错误。这只是当我得到一个类似于本例中作者得到书籍的列表时。但当我使用T4时,效果非常好。我有点喜欢创建自己的类,因为这样我就可以将AddBook()添加到其中。。所以如果有人知道原因,我非常感激 Schema specified is not valid. Errors: The relationship 'EworkModel.AuthorBook' was not loaded because the type 'EworkModel.Book

当我尝试创建我自己的POCO类时,我得到了这个错误。这只是当我得到一个类似于本例中作者得到书籍的列表时。但当我使用T4时,效果非常好。我有点喜欢创建自己的类,因为这样我就可以将AddBook()添加到其中。。所以如果有人知道原因,我非常感激

Schema specified is not valid. Errors: 
The relationship 'EworkModel.AuthorBook' was not loaded because the type 'EworkModel.Book' is not available.
The following information may be useful in resolving the previous error:
The required property 'AuthorId' does not exist on the type 'EntityWork.Model.Book'.
我的课是这样的

public class Author
{
    public virtual int AuthorId { get; set; }
    public virtual string Name { get; set; }
    public List<Book> Books { get; set; }
}

public class Book
{
    public virtual int BookId { get; set; }
    public virtual string Title { get; set; }
    public virtual Author Author { get; set; }
}

 private ObjectSet<Author> _authors;
    private ObjectSet<Book> _books;

    public EntityWorkContext()
        : base("name=EworkEntities", "EworkEntities")
    {            
        _authors = CreateObjectSet<Author>();
        _books = CreateObjectSet<Book>();

        ContextOptions.LazyLoadingEnabled = true;
    }

    public ObjectSet<Author> Authors
    {
        get
        {
            return _authors;
        }
    }

    public ObjectSet<Book> Books
    {
        get
        {
            return _books;
        }
    }

    public void Save()
    {
        SaveChanges();
    }
公共类作者
{
公共虚拟整数编写{get;set;}
公共虚拟字符串名称{get;set;}
公共列表书籍{get;set;}
}
公共课堂用书
{
公共虚拟整数BookId{get;set;}
公共虚拟字符串标题{get;set;}
公共虚拟作者{get;set;}
}
私有对象集作者;
私有对象集;
公共实体WorkContext()
:base(“名称=EworkEntities”,“EworkEntities”)
{            
_authors=CreateObjectSet();
_books=CreateObjectSet();
ContextOptions.LazyLoadingEnabled=true;
}
公共对象集作者
{
得到
{
返回作者;
}
}
公共对象集书籍
{
得到
{
还书;
}
}
公共作废保存()
{
保存更改();
}

似乎EF正在查找书本实体中的外键。可能您没有排除外键映射


无论如何,如果您使用t4生成的POCO,您仍然可以通过创建分部类来添加自定义方法,如AddBook(),因为t4生成的类是分部类。

我将把它抛到一边,但我只对其他实体类型使用virtual,而不对基本类型(如
int
)使用virtual。我不能说这是否是问题的一部分。我必须去调查那件事。是的,我注意到我可以这样做,所以我的问题有点解决了,但是我现在有了另一个问题,首先是代码。。但那是另一篇帖子(我发的)谢谢你的回复。。