实体框架在发布模式下避免[NotMapped]属性

时间:2017-04-26 08:16:26

标签: c# .net asp.net-mvc entity-framework visual-studio-2017

我最近将项目从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服务器中托管它时,我收到此错误:

Error screenshot

到目前为止我尝试过:

  1. 关于类似问题的其他答案,我尝试删除上述文件中的参考System.ComponentModel.DataAnnotations; - 无效

  2. 尝试从路径

    复制.dll文件
    C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll**
    

    到应用程序的bin目录

  3. 更新了已安装的NuGet软件包using Update-Package -reinstall -Project "Kyc v4"

  4. 以上都不适用于我,如果您想知道 - 我的DbSet错误中提到的模型没有DbContext,所以我的猜测是{{1实体框架([NotMapped])由于某种原因正在忽略属性。我的6.1.3引用中的版本为System.ComponentModel.DataAnnotations,运行时为4.0.0.0

    感谢任何帮助。谢谢

3 个答案:

答案 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个项目:

  1. DbContext项目-用于数据迁移和实体框架代码
  2. 模型项目-这些包含DbContext项目引用的模型(并包含[NotMapped]标签。这是.NET 2.0标准项目,因为它与Xamarin iOS和Android应用程序项目共享模型。
  3. ASP.NET MVC项目-其中包含WebUI并同时引用了上述两项。

问题是我将Nuget包用于:

System.ComponentModel.DataAnnotations

对于 Models Web 项目,而不是 DbContext 项目。

.NET Standard项目需要这个,因为我无法引用普通的.NET库(也许不是最好的项目组织,但是它拥有的是我的东西)

该解决方案在所有项目中均引用了'System.ComponentModel.DataAnnotations'的nuget版本。

当我这样做并运行Update-Database时,它运行良好。