EF Model First:子类对象不出现在Context中

时间:2012-07-27 09:55:43

标签: c# .net entity-framework domain-driven-design ef-model-first

我有一个使用Model First方法创建的模型。当我尝试使用上下文访问Book实体时,它没有列在那里;但是销售商品已列出。为了将Book实体添加到上下文中,需要做哪些更改?

注意:请阅读Adding reference to entity causing ExceptionEntity Framework: Get Subclass objects in Repository了解详情。

enter image description here

模型

enter image description here

代码

enter image description here

    static void Main(string[] args)
    {
        string connectionstring = "Data Source=.;Initial Catalog=NerdDinners;Integrated Security=True;Connect Timeout=30";
        using (var db = new MyModelFirstTestContainer(connectionstring))
        {
            Book book = new Book();
            book.AvailabilityStatus = "Available";
            book.Price = 100;
            book.Title = "World visit";

           //db.


        }

2 个答案:

答案 0 :(得分:2)

实体框架不会为您的Context上的继承项创建单独的ObjectSet。

相反,您可以像这样使用OfType<T>()方法:

from b in db.SellingItems.OfType<Book>()
where b.Title = "my title"
select b;

以下是OfType

的MSDN文档

如果要添加继承的实体,则将使用父ObjectSet。

Book b = ...;
db.SellingItems.Add(b);
db.SaveChanges();

答案 1 :(得分:1)

我不知道你怎么能在那里添加它们,但是你真的想要它吗?

相反,我会使用“db.SellingItems.OfType()”。通过这种方式,您可以请求所有书籍并将其投入使用。如果你调用db.SellingItems,那么你将获得具有适当实例的所有SellingItems。