【问题标题】:ASP.NET vNext DataAnnotations DatabaseGenerated not workingASP.NET vNext DataAnnotations DatabaseGenerated 不起作用
【发布时间】:2015-04-18 19:45:30
【问题描述】:

我正在尝试在 ASP.NET 5 中定义这样的模型 ID 变量:

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }

为了支持数据注释,我在我的 project.json 文件中添加了包 System.ComponentModel.DataAnnotations,如下所示:

"System.ComponentModel.Annotations": "4.0.10-beta-22811"

在模型cs文件中我添加了using System.ComponentModel.DataAnnotations.Schema;

虽然我收到以下错误:

错误 CS0433 类型“DatabaseGeneratedAttribute”存在于“System.ComponentModel.Annotations, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”和“System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=中立,PublicKeyToken=31bf3856ad364e35'

我真的不知道该如何解决这个问题。我试图包含命名空间 System.ComponentModel.Annotations 而不是 System.ComponentModel.DataAnnotations 但它似乎不存在,因为我收到此错误:

错误 CS0234 名称空间“System.ComponentModel”中不存在类型或名称空间名称“Annotations”(您是否缺少程序集引用?)

如果该命名空间不存在,我不明白如何获得先前的错误,该错误告诉我 DatabaseGeneratedAttribute 存在于两个地方。

非常感谢我能得到的所有帮助。

【问题讨论】:

  • 首先,ASP.NET 不知道数据库是什么。所以你没有使用 ASP.NET,MVC 也没有。它们与数据库无关。这意味着您正在使用像 Entity Framework 这样的数据访问技术,它与 ASP.NET 无关并且不相关,除了您可能在 ASP.NET 应用程序中使用 Entity Framework 的事实。鉴于您使用的是实体框架,下一个问题是.. 什么版本? EF6 还是 EF7?您使用的是哪个版本的 ASP.NET 5?已有 6 个 CTP 版本。

标签: c# asp.net asp.net-mvc data-annotations


【解决方案1】:

您可以只使用 KeyAttribute。这应该会为您自动生成。

[Key]
public int Id { get; set; }

该属性在 System.ComponentModel.DataAnnotations 命名空间中可用

但是,如果您想继续使用 DatabaseGeneratedAttribute。该错误是不言自明的。它告诉你它在两个命名空间中都可用

System.ComponentModel.DataAnnotations     
System.ComponentModel.DataAnnotations.Schema

您需要明确说明您需要使用的命名空间,例如

[System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]

您始终可以使用别名来保持命名空间简短而优美。

【讨论】:

    【解决方案2】:

    请检查您的项目是否没有引用两个版本的 System.ComponentModel.DataAnnotations.dll 程序集。

    旧版本 (4.0.0.0) 可以默认包含到您的项目中,并且在安装新版本 (4.0.10.0) 的包后不会被删除。

    【讨论】:

    • 谢谢。得到它的工作,但我仍然认为我有两个版本。我要检查一下。
    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多