Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.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# EntityFrameWork DataFirst和MVC_C#_Asp.net Mvc_Entity Framework_Asp.net Mvc 4 - Fatal编程技术网

C# EntityFrameWork DataFirst和MVC

C# EntityFrameWork DataFirst和MVC,c#,asp.net-mvc,entity-framework,asp.net-mvc-4,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,我正在进行一个项目,首先利用VS2012中的MVC4和EF数据。该表有一个主键,该主键在字段名中没有id,因此EF不理解该主键,因此应将其用作主键。EF生成代码后,我添加以下注释并使用语句 using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; public partial class Game { [Key] [DatabaseGenera

我正在进行一个项目,首先利用VS2012中的MVC4和EF数据。该表有一个主键,该主键在字段名中没有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数据模型

谢谢

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

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

问:如果你的模型是DB first,为什么它不知道游戏桌的PK是什么?在读取表架构以生成模型时,属性是否在末尾具有Id无关紧要

[MetadataType("GameMetadata")]
public partial class Game
{
    public class GameMetadata
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.None)]
        public int GameNumber; 
    }
}

只需在edmx图中将其标记为PK。但是为什么EF在edmx第一次构建时没有将其识别为主键呢?如果它在数据库中被定义为PK,那么它应该有。我看到你得到了答案,但是你可以并且应该在edmx中做这些事情。这里真的不需要伙伴课程。我仍然想知道为什么你在商店模型中没有PK。完美,找到了我想要的。