实体类型[class]不是当前上下文模型的一部分

本文关键字:上下文 模型 一部分 类型 class 实体 | 更新日期: 2023-09-27 18:13:08

我在本地服务器上有db,我正试图使用实体框架获取数据。VS自动创建了edmx模型和连接字符串,现在当我尝试访问这样的数据:

using (var context = new NSMASEntitiesTEST())
            {
                var mases = context.Mas;
                foreach (var mas in mases) //error on this line
                {
                    //
                }
            }

显示如下错误:

实体类型Mas不是当前上下文模型的一部分。

但问题是,我只得到这个错误的表,有一个列的geography数据类型(e.g. Mas)。其他表也可以。

我想知道这个问题是否仅仅是因为地理数据类型引起的,因为我看过了类似问题的答案,但没有一个对我有用。

In Mas.cs:

public partial class Mas
    {
        public int MasId { get; set; }
        public string MasName { get; set; }
        //...
        public Nullable<System.DateTime> MasContractSzif { get; set; }
        public System.Data.Spatial.DbGeography MasBoundary { get; set; }
    }
编辑:

我已经创建了2个空表用于测试:

First with 2 columns INT and NVARCHAR(50)

Second with 3 columns INT, NVARCHAR(50) and GEOGRAPHY

只有当我想访问第二个表时,它才给我错误,所以它肯定是由地理类型引起的。

实体类型[class]不是当前上下文模型的一部分

好了,我解决了。EF 6生成错误的数据类型。

在旧版本的EF中,该数据类型在System.Data.Spatial.DbGeography和EF 6中仍然生成这样的geography数据类型。但现在应该是System.Data.Entity.Spatial.DbGeography了。

我刚刚在包含geography数据类型的每个类(表)中重写了这一点,所有这些表现在都工作得很好。

try Linq:

List<int> myMasId = context.Mas.Select( x => x.MasId).ToList();

则可以遍历列表。

如果您想拥有整个集合,请使用:

 List<Mas> masData = context.Mas.AsQueryable().ToList<Mas>();

如果这也不起作用,那么智能感知呢?

上下文。有有效的方法吗?如果没有,那么上下文和模型之间存在问题

相关文章: