我正在开发一个利用VS2012中的MVC4和EF Data First的项目。该表有一个主键,在字段名称中没有“id”,因此EF不理解它应该使用它作为主键。 EF生成代码后,我添加以下注释和使用语句。
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
public partial class Game
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int GameNumber { get; set; }
如果我从生成代码中建立我的模型,那么如果我更新数据库模型,我将丢弃自定义更改。如何保留自定义更改并更新数据库EF数据模型。
谢谢
答案 0 :(得分:0)
使用MetadataTypeAttribute
(MSDN)在实体类的部分实现上定义元数据类,然后在该元数据类中修饰属性。
请注意,修饰的部分类实现应该存在于自动生成的文件以外的文件中,以便从DB继续刷新。
(问题:如果您的模型首先是数据库,为什么它不知道PK为Game
表的内容?该属性最后是否Id
无关紧要当它正在读取表模式以生成模型时...)
[MetadataType("GameMetadata")]
public partial class Game
{
public class GameMetadata
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int GameNumber;
}
}