我在本地服务器上有db,我正在尝试使用Entity Framework获取数据。 VS自动创建了edmx模型和连接字符串,现在当我尝试访问这样的数据时:
using (var context = new NSMASEntitiesTEST())
{
var mases = context.Mas;
foreach (var mas in mases) //error on this line
{
//
}
}
它给了我以下错误:
实体类型Mas不是当前上下文模型的一部分。
但问题是我只对具有一列geography
数据类型(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; }
}
修改
我创建了2个用于测试的空表:
首先,包含2列INT和NVARCHAR(50)
第二,包含3列INT,NVARCHAR(50)和GEOGRAPHY
只有当我想访问第二个表时它才会出错,所以它肯定是由地理类型引起的。
答案 0 :(得分:1)
好的,我已经解决了。 EF 6生成此数据类型错误。
在旧版本的EF中,此数据类型位于System.Data.Spatial.DbGeography
,EF 6仍然生成geography
数据类型。但它现在应该是System.Data.Entity.Spatial.DbGeography
。
我刚刚在包含geography
数据类型的每个类(表)中对此进行了重写,所有这些表现在都运行良好。
答案 1 :(得分:0)
尝试Linq:
List<int> myMasId = context.Mas.Select( x => x.MasId).ToList();
然后你可以遍历列表。
如果您想使用整个系列:
List<Mas> masData = context.Mas.AsQueryable().ToList<Mas>();
如果这也不起作用,那么Intellisense呢?
context.Mas是否显示有效的方法?如果没有,则上下文和模型之间存在问题