更新数据库后出现实体框架错误

entity-framework error after update database

提问人:sam it 提问时间:7/12/2018 更新时间:7/16/2018 访问量:78

问:

我在实体 freamwork 上遇到此错误

“指定的 LINQ 表达式包含对与不同上下文关联的查询的引用”

它发生在我之后

  • 在数据库中添加新字段 并更新实体实体框架中的模型

  • 在我将 dal(项目包含实体实体框架)放入控制台项目并租用此脚本后

    Database.SetInitializer(新 DropCreateDatabaseIfModelChanges());

更新实体

但是我有这个错误“指定的LINQ ...”

我在互联网上检查了,他们说我必须更新 .tt 文件或 .edmx 文件 但是 didin t 在我的 DAL 项目中找到了任何 TT 文件或 EDMX 文件

你能帮帮我吗 谢谢

C# 实体框架

评论

0赞 ADyson 7/12/2018
好吧,如果没有看到您的代码,这有点棘手,但听起来您组合了来自两个不同 DbContext 的查询,并且可能在您关闭其中一个之后。你不能这么做。使用单个上下文。如果需要,可以将其作为变量传递。
0赞 7/12/2018
您的 DbContext 文件中是否有 OnModelCreating 方法?如果是这样,您还必须将实体以及任何约束添加到模型生成器中。
0赞 Gert Arnold 7/12/2018
你有方法吗?如果不查看类定义和实际引发异常的代码,就不可能回答这个问题。Seed

答:

0赞 sam it 7/16/2018 #1

我发现我的错误在哪里

尝试查询两个存储库

不知道每个存储库都有自己的数据库上下文 我的错误是:

from football in  repoFootabll.Query().Where (x => x.id = 12)
From members in repoMember.Query().where(x=> x.FootaballId = football.id)
select (repo2)

为了解决这个问题,我只是在会员存储库中添加了足球的dbset

class repoMember 
{
    dbSet<football> foot
    dbSet<member> memeber
 ...
}

并创建函数 inisde my repo member :

感谢 ADyson 帮助我

getmemebers()
{
     from football in  foot.Where (x => x.id = 12)
    From members in memeber.where(x=> x.FootaballId = football.id)
    select (members)
}