我是MVC的新手所以请耐心等待。
作为一个学习项目,我决定制作一个梦幻足球网站。 NFL有一个非常酷的api,可以让你下载TONS的统计数据和其他信息。作为数据流的一部分,每个玩家都有一个id号(实际上他们有3个ID,但我只使用主要的ID)。
问题出在这里:我想设置我的模型以使用playerId值(从NFL api上的AJAX调用传入)作为我的Player类上的PK和其他几个类/表上的FK。但是,您通常无法在db上分配PK Identity值。我做了很多寻找解决方法并尝试了几个技巧,但都没有奏效。我尝试手动玩数据库,最终破坏了项目,不得不重新开始。我曾想过让玩家成为代理键,但这似乎是不必要的复杂。从理论上讲,我会定期调用api进行更新,并且这些都与该playerId值相关联,因此使该玩家成为最有意义的PK。
有办法做到这一点吗?
答案 0 :(得分:0)
关闭数据库中主键列的自动增量功能。如果您使用SQL Server,则不要设置标识列。像这样设置你的模型:
public class Table_1
{
[Key]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.None)]
public int playerId {get; set;}
public string player_name { get; set; }
}
然后在创建记录时设置playerId。
答案 1 :(得分:0)
您将不得不关闭SQL Server端的Identity规范:
答案 2 :(得分:0)
我终于开始工作了。
首先,将注释添加到PK(在我的情况下为playerId。
[DatabaseGenerated(DatabaseGeneratedOption.None)]
其次,当你进行迁移时,你必须证明阅读它。我遇到了很多错误,因为迁移代码是完全错误的。在一个案例中,我更改了PK列的名称,代码尝试在删除旧PK列之前添加新PK列。我必须做的就是纠正这些步骤。确保从作为PK的列中剥离“identity:true”。
*注意:我的迁移工具问题可能部分是由于我使用的VS2012版本,我暂时没有更新。从那以后,可能已经解决了一些问题。