我最近将项目从4.0升级到.NET Framework 4.5。完成本MSDN Migration Guide中提到的所有任务后,我添加了一些对支持Oracle数据库的模型的更改。
模型如下所示:
namespace KYC_v4.Models
{
[Serializable]
public class Organization
{
public int OrganizationID { get; set; }
[Required]
[Display(Name = "OrganizationName", ResourceType = typeof(Resources.Home))]
[MaxLength(200)]
public string OrganizationName { get; set; }
public virtual List<UserGroup> Groups{get;set;}
public OrganizationDetails Details { get; set; }
public int UserID { get; set; }
[NotMapped]
[MaxLength(100)]
public string membersCount { get; set; }
[NotMapped]
public List<CheckOrgPermissionViewModel> CheckPermission { get; set; }
}
}
public class CheckOrgPermissionViewModel {
public string Permissiontype { get; set; }
public bool isTrue { get; set; }
}
从Visual Studio调试时它正常运行,但是当我尝试在IIS服务器中托管它时,我收到此错误:
到目前为止我尝试过:
关于类似问题的其他答案,我尝试删除上述文件中的参考System.ComponentModel.DataAnnotations;
- 无效
尝试从路径
复制.dll
文件
C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll**
到应用程序的bin
目录
更新了已安装的NuGet软件包using Update-Package -reinstall -Project "Kyc v4"
以上都不适用于我,如果您想知道 - 我的DbSet
错误中提到的模型没有DbContext
,所以我的猜测是{{1实体框架([NotMapped]
)由于某种原因正在忽略属性。我的6.1.3
引用中的版本为System.ComponentModel.DataAnnotations
,运行时为4.0.0.0
感谢任何帮助。谢谢
答案 0 :(得分:0)
您是否尝试将注释[Key]放在OrganizationID上?
Serializable] public class Organization {
[Key]
public int OrganizationID { get; set; } }
答案 1 :(得分:0)
最后,我发现问题出在Visual studio IDE
本身。在做&#34; Clean&#34; /&#34; Build&#34;时,它并没有清理旧的参考文献。或&#34;重建&#34;由于某种原因,引用是相互矛盾的,并导致与System.ComponentModel.DataAnnotations.Schema
混淆。所以我手动删除旧文件并发布到新的空目录。
答案 2 :(得分:0)
我遇到了这个问题,花了一些时间才解决了这个问题。基本上,我有3个项目:
问题是我将Nuget包用于:
System.ComponentModel.DataAnnotations
对于 Models 和 Web 项目,而不是 DbContext 项目。
.NET Standard项目需要这个,因为我无法引用普通的.NET库(也许不是最好的项目组织,但是它拥有的是我的东西)
该解决方案在所有项目中均引用了'System.ComponentModel.DataAnnotations'的nuget版本。
当我这样做并运行Update-Database时,它运行良好。