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

时间:2015-12-28 15:55:50

标签: c# entity-framework linq

我在尝试通过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。我仍然得到消息。

有人能用正确的方向推动我吗?

0 个答案:

没有答案