1

我正在开发一个在 VS2012 中使用 MVC4 和 EF Data First 的项目。该表的主键在字段名称中没有“id”,因此 EF 不理解它应该将其用作主键。在 EF 生成代码后,我添加了以下注释和 using 语句。

using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

public partial class Game
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int GameNumber { get; set; }

如果我基于生成代码的模型,我所做的自定义更改将在我更新数据库模型时被丢弃。如何保留我的自定义更改并更新数据库 EF 数据模型。

谢谢

4

1 回答 1

0

使用MetadataTypeAttribute( MSDN ) 在实体类的部分实现上定义元数据类,然后装饰该元数据类中的属性。

请注意,装饰的部分类实现应该存在于自动生成的文件以外的文件中,以便持续从 DB 刷新。

(问题:如果您的模型首先是 DB,为什么它不知道表的 PK 是什么Game?在读取表模式以生成模型时,属性是否Id在末尾并不重要...... )

[MetadataType("GameMetadata")]
public partial class Game
{
    public class GameMetadata
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int GameNumber; 
    }
}
于 2013-10-05T01:47:50.590 回答