实体类型[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
只有当我想访问第二个表时,它才给我错误,所以它肯定是由地理类型引起的。
好了,我解决了。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>();
如果这也不起作用,那么智能感知呢?
上下文。有有效的方法吗?如果没有,那么上下文和模型之间存在问题