Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重复';System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute';属性_C#_Entity Framework_Ria - Fatal编程技术网

C# 重复';System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute';属性

C# 重复';System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute';属性,c#,entity-framework,ria,C#,Entity Framework,Ria,我使用的是EntityFramework版本4.4,代码优先,我已经在一个单独的项目(MyApp.DataModel)中创建了我的数据模型。 因为我正在构建Silverlight应用程序,所以我正在使用WCF RIA服务。ria服务所需的代码位于不同的项目(MyApp.services)中。此项目引用了MyApp.DataModel 数据模型的一个示例: [Column("Remaining")] [DatabaseGenerated(DatabaseGeneratedOption

我使用的是EntityFramework版本4.4,代码优先,我已经在一个单独的项目(MyApp.DataModel)中创建了我的数据模型。 因为我正在构建Silverlight应用程序,所以我正在使用WCF RIA服务。ria服务所需的代码位于不同的项目(MyApp.services)中。此项目引用了MyApp.DataModel

数据模型的一个示例:

   [Column("Remaining")]
    [DatabaseGenerated(DatabaseGeneratedOption.Computed)]
    public virtual decimal? Remaining
    {
       //
    }
当我构建MyApp.Services时,我得到一个错误

重复的“System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute”属性

实际上,在生成的代码中有两个属性

[System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed)]
[System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Computed)]
如果我删除了DatabaseGenerated,那么在插入时会出现一个错误 无法修改列“剩余”,因为它是计算列或是联合运算符的结果


你知道为什么以及如何解决这个问题吗?

据我所知,这里的文档:,
Key
已经默认为
DatabaseGeneratedOption.Identity
,所以你不需要添加单独生成的数据库

从DatabaseGenerated下的零件摘录:

密钥属性将成为数据库中的标识密钥。那会 与将DatabaseGenerated设置为相同 DatabaseGenerationOption.Identity。如果你不想让它成为一个 标识键,可以将该值设置为DatabaseGenerationOption.None


老实说,我还没有对此进行测试,但您能否确认在删除[DatabaseGenerated(DatabaseGenerateOptions.Identity)]后,其他属性仍保留在生成的代码中?

如果将属性标记为DatabaseGenerateOptions.Identity,EF会理解这是关键属性。 实际上,如果不放置none属性(Key或DatabaseGeneratedOption.Identity),EF将假定这是id,因为属性以“id”结尾,并将在数据库中创建一个自动增量字段。 DataAnnotation在许多情况下都是可选的(比如您的)。
您也不需要将此属性标记为虚拟属性,因为它是基本类型。使用虚拟仅关联其他类(延迟加载)。

谢谢。。我已经更仔细地阅读了文档并测试了这种情况,您是对的。[Key]已默认为DatabaseGeneratedOption.Identity。我有另一个问题,但这次是databasegenerated.computed。我已经编辑了我的第一篇文章。非常感谢您的帮助。我还有一个问题,但这次是databasegenerated.computed。我已经编辑了我的第一篇文章。。谢谢你的帮助。