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

C# 实体类型[class]不是当前上下文模型的一部分,c#,sql-server-2012,geography,entity-framework-6.1,C#,Sql Server 2012,Geography,Entity Framework 6.1,我在本地服务器上有数据库,我正在尝试使用实体框架获取数据。VS已自动创建edmx模型和连接字符串,现在当我尝试访问以下数据时: using (var context = new NSMASEntitiesTEST()) { var mases = context.Mas; foreach (var mas in mases) //error on this line {

我在本地服务器上有数据库,我正在尝试使用实体框架获取数据。VS已自动创建edmx模型和连接字符串,现在当我尝试访问以下数据时:

using (var context = new NSMASEntitiesTEST())
            {
                var mases = context.Mas;
                foreach (var mas in mases) //error on this line
                {
                    //
                }
            }
它给了我以下错误:

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

但问题是,我只在有一列
geography
datatype(f.e.
Mas
)的表中得到这个错误。其他桌子也可以

我想知道这个问题是否仅仅是因为那个地理数据类型而引起的,因为我已经看过了类似问题的答案,但什么都不适合我

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; }
    }
公共部分类Mas
{
公共int MasId{get;set;}
公共字符串名称{get;set;}
//...
公共可为空的MasContractSzif{get;set;}
public System.Data.Spatial.dbg属性{get;set;}
}
编辑:

我为测试创建了两个空表:

第一个带有两列INT和NVARCHAR(50)

第二个包含3列INT、NVARCHAR(50)和GEOGRAPHY

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

试试Linq:

List<int> myMasId = context.Mas.Select( x => x.MasId).ToList();
List myMasId=context.Mas.Select(x=>x.MasId.ToList();
然后您可以遍历列表

如果您想让整个集合使用:

 List<Mas> masData = context.Mas.AsQueryable().ToList<Mas>();
List masData=context.Mas.AsQueryable().ToList();
如果这也不起作用,那么Intellisense呢


context.Mas是否显示有效的方法?如果没有,那么上下文和模型之间存在问题

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

在早期版本的EF中,此数据类型位于
System.Data.Spatial.DbGeography
中,EF 6仍在生成这样的
geography
数据类型。但现在应该是系统、数据、实体、空间、数据库地理


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

在ObjectContext中发布Mas实体的定义。那么,您是否尝试删除
geography
?然后发生了什么?你经历过哪些类似的问题?您是否可以链接到它们,以避免给出建议这些解决方案的答案?这是什么版本的实体框架?更新后,仅当表包含
geography
数据类型时,才会出现错误。