entity framework程序集中的重复types名称(6.1.0)
我不知道发生了什么,但是在做查询时,我不断收到以下exception。 “在程序集中复制types名称”。 我一直无法在网上find解决scheme。 我已经通过从解决scheme中的所有项目中移除entity framework并使用块重新安装来解决此问题。 然后突然间,exception又回来了。 我一遍又一遍地validation了我的表模式,发现没有错。
这是导致exception的查询。
var BaseQuery = from Users in db.Users join UserInstalls in db.UserTenantInstalls on Users.ID equals UserInstalls.UserID join Installs in db.TenantInstalls on UserInstalls.TenantInstallID equals Installs.ID where Users.Username == Username && Users.Password == Password && Installs.Name == Install select Users; var Query = BaseQuery.Include("UserTenantInstalls.TenantInstall"); return Query.FirstOrDefault();
正如我前面提到的,同样的查询在以前工作。 数据没有改变,代码没有改变。
作为解决方法,只有在使用debugging器单步执行时才会发生这种情况。 如果你把你的断点放在你的源代码里面,那么错误就不会显示出来。
我还没有卸载,这至less让我继续工作。
这是EF 6.1.0的一个新问题,EF团队意识到了这个问题:
在我的WCF webservice
最近面临着同样的。 只需清理你的解决scheme,并重build它。 这应该解决这个问题。
以上都不是为我工作,但是在前面指定的链接中,我做了这个,这对我有效。 这是由'bunomonteiro'
修复“程序集中的重复types名称”
我有类似的问题。 我检查了所有的模型/类,我没有使用types重复的名称。 我删除了程序集,并从数据库中重新生成了模型和上下文对象,仍然有同样的问题。
在Visual Studio中产生的痕迹“儿童无法评估”。 解决方法是添加.ToList(); 或ToArray(); 或ToDictionary()等,到您的查询。 等等
例如。 var query = context.TableName.Where(x => x.name ==“CodeRealm”)。ToList();
PingBack – http://entityframework.codeplex.com/workitem/1898
7月18日上午3:37,bunomonteiro写道
这似乎是在6.1.3中解决的。
以下是我如何得出这个结论:
我在之前的版本中可靠地重现了这个问题(可能是6.1.2)。 重build我的解决scheme并没有解决它。 正如在其他答案中所说的那样,在前后出现断点的情况下重现了问题,而只有在exception点之后才有断点才导致exception。 [总结:我似乎和其他所有使用旧版EF的人一样。]
鉴于完全相同的断点,没有重新启动或类似的东西,我只是安装到entity framework的更新。 这确实解决了这个问题,我可以在“问题代码”之前和之后自由地使用断点,而不会抛出exception。
由于这个问题对于这个问题是一种随意而又温和的态度,所以很难说EF的更新专门解决了这个问题,但是到目前为止这么好。
随着EF 6.1,我遇到了同样的问题。
就我而言,我的模型有一个自我参照表。 所以我发现这可能是由以下两个原因造成的。
- //Database.SetInitializer(null)只需在DBContext构造函数中注释掉以下行即可。
- 保持外键及其相应的导航属性一致,或只保留导航属性为空
必须纠正“ select用户”;代码段:
var BaseQuery = from Users in db.Users join UserInstalls in db.UserTenantInstalls on Users.ID equals UserInstalls.UserID join Installs in db.TenantInstalls on UserInstalls.TenantInstallID equals Installs.ID where Users.Username == Username && Users.Password == Password && Installs.Name == Install select Users;
更正码:
select new { ID=Users.ID, F1= Users.forExampleField1, F2= UserInstalls.forExampleFild1, F3= Installs.forExampleFild1 , F4= Installs.forExampleFild2 };
原因:
该类中的外键字段存在,并且“Linq”无法删除它们,但出现以下错误:
在程序集中复制types名称
(当然这个问题故障“entity framework”!)
关于这个问题我是一个完整的解释,但不幸的是,我的英语不太好,我很难解释专业化,因为我知道很多人不明白我的意思。 我为此道歉。
对我们来说,服务器的重新启动是全部。
我也遇到类似的问题,我通过将结果集转换为List ie来解决这个问题
var registers = registerRepository.All.ToList()。其中(a => a.AreaLatitude.Equals(0));
转换结果ToList解决了问题,以进一步迭代它。
并解决了这个问题。
有同样的问题,昨天花了几个小时才摆脱。 使用EF 6.1.0,执行linq到实体的错误类似于上面的查询。 我的解决scheme是停止IIS Express,清理解决scheme,从解决scheme中的所有项目中卸载EF,closuresVS2012,删除解决scheme中的所有包文件夹/文件,然后重新启动VS2012,在需要的地方添加EF 6.1.0,编译,错误消失。