使用Entity Framework 6创建主键

时间:2016-01-31 09:01:58

标签: c# .net entity-framework entity-framework-6 ef-migrations

我已经检查了文档,这里有多个问题,但没有任何问题,但应该如此。我的课程

public class Player
{
    [Key]
    public int PlayerId;

    public void SetId(int id)
    {
        this.PlayerId = id;
    }

    public int GetId()
    {
        return this.PlayerId;
    }

    protected String name;

    public void SetName(String name)
    {
        this.name = name;
    }

    public String GetName()
    {
        return this.name;
    }
}

正如您所看到的,我正在使用名称约定,我甚至添加了[Key]但仍在我正在进行迁移时收到

  

播放器:: EntityType'Player'没有定义键。定义密钥   这个EntityType。玩家:EntityType:EntitySet'玩家'基于   输入没有定义键的“播放器”。

一个是什么?为什么这不起作用?

2 个答案:

答案 0 :(得分:2)

您需要使用auto properties

public int PlayerId { get; set; }

获取/设置方法看起来像Java,在C#中我们通常使用内联get/set

<强>更新: 如果要使用受保护的属性,可以使用下面的代码

// protected property
protected int PlayerId { get; set; }
// protected get
public int PlayerId { protected get; set; }
// protected get
public int PlayerId { get; protected set; }

答案 1 :(得分:2)

我从未见过像这样的声明。看起来像我这样的java :)尝试将PlayerId声明为属性,而不是公共字段。

public int PlayerId { get; set; }

你不需要像GetId和SetId这样的方法。

如果要使用具有访问说明符的属性作为受保护或私有,则需要在配置类中告知:

public class Player
{
    public int PlayerId { get; set; }

    protected string Name { get; set; }

    public class PlayerConfiguration : EntityTypeConfiguration<Player>
    {
        public PlayerConfiguration()
        {
            Property(b => b.Name);
        }
    }
}