2

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

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

它给了我以下错误:

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

但问题是我只对具有一列数​​据geography类型(fe 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; }
    }

编辑:

我创建了 2 个空表进行测试:

首先有 2 列 INT 和 NVARCHAR(50)

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

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

4

2 回答 2

2

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

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

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

于 2014-07-17T11:49:34.840 回答
0

尝试Linq:

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

然后你可以遍历列表。

如果您想拥有整个 Collection 使用:

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

如果这也不起作用,那么 Intellisense 呢?

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

于 2014-07-16T13:06:46.977 回答