使用实体框架 6 创建主键
本文关键字:创建 框架 实体 | 更新日期: 2023-09-27 18:32:40
我已经检查了文档,这里有多个关于 SO 的问题,没有任何效果,但它应该。在我的班级下面
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]
但是当我进行迁移时,我仍然收到
玩家::实体类型"玩家"未定义键。定义键 此实体类型。玩家:实体类型:实体集"玩家"基于 键入未定义键的"播放器"。
这是怎么回事?为什么这不起作用?
你需要使用auto properties
public int PlayerId { get; set; }
你的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; }
我从未见过这样的声明。对我来说看起来像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);
}
}
}