我已经检查了文档,这里有多个问题,但没有任何问题,但应该如此。我的课程
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'玩家'基于 输入没有定义键的“播放器”。
一个是什么?为什么这不起作用?
答案 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);
}
}
}