我在尝试通过linq语句访问数据时遇到上述错误。 我使用Entity Framework 6.0和数据库第一种方法。 以下是我使用的代码:
class contextHandler
{
private MyEntities myContext;
public void initialize()
{
//initialize Context
var conn = new EntityConnection(@"metadata=res://*/Print.csdl|res://*/Print.ssdl|res://*/Print.msl;provider=System.Data.SqlClient;provider connection string="";data source=SQLServer;initial catalog=MyDatabase;persist security info=True;user id=sa;password=ThePassword;MultipleActiveResultSets=True;App=EntityFramework"";");
myContext = new MyEntities(conn);
}
public decimal getPrice(int id)
{
var price = from t in myContext.MyTable
where t.id == id
select t.Price;
decimal d = Convert.ToDecimal(price);
return d;
}
}
getPrice中的linq语句中发生错误。 我的上下文和实体的代码是:
public partial class MyEntities: DbContext
{
public MyEntities(EntityConnection conn)
: base(conn.ConnectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<MyTable> MyTable { get; set; }
}
和
public partial class MyTable
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public MyTable()
{
this.MyTable = new HashSet<MyTable>();
}
public int id { get; set; }
public decimal Price { get; set; }
...
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<MyTable> MyTable { get; set; }
}
上下文和实体的代码是bot自动生成的。
我是以第一次创建新contextHandler
的形式使用此功能,然后调用initialize()
方法,之后,当我需要对奖品进行一些计算时,我会调用{{ 1}}方法。
contextHandler和myContext都不为null。我仍然得到消息。
有人能用正确的方向推动我吗?