2

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

注意:请阅读添加对导致异常实体框架的实体的引用:获取存储库中的子类对象以获取更多详细信息。

在此处输入图像描述

模型

在此处输入图像描述

代码

在此处输入图像描述

    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.


        }
4

2 回答 2

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();
于 2012-07-27T10:01:23.157 回答
1

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

相反,我会使用“db.SellingItems.OfType()”。这样,您就可以请求所有书籍并已将它们投射出来。如果您调用 db.SellingItems,那么您将获得所有具有正确实例的 SellingItems。

于 2012-07-27T10:01:06.290 回答