我对某些Entity Framework行为感到有些迷惑。我有一个这样的课:
Account
-ID (PK, int, not null)
-AccountID (PK, int, not null)
-ClientID
-... other scalars
AccountID字段应来自我们使用的API。不幸的是,我当时并不知道Entity Framework不支持非db生成的主键。所以我必须将AccountID作为主键的一部分删除。
当我从AccountID字段中删除[Key]属性时,我从迁移中得到一些奇怪的行为。以下是迁移中对我没有意义的行。
DropColumn("dbo.Account", "ClientID");
RenameColumn(table: "dbo.Account", name: "ID", newName: "ClientID");
.... more stuff
AlterColumn("dbo.Account", "ID", c => c.Int(nullable: false, identity: true));
AddPrimaryKey("dbo.Account", "ID");
为什么Entity Framework会尝试删除这个不相关的列(ClientID)?为什么尝试在AlterColumn语句中使用不再存在的列(ID已重命名为ClientID)?
答案 0 :(得分:0)
您可以使用非db生成的主键。
如果您先做代码,可以使用以下属性:
[DatabaseGenerated(DatabaseGenerationOption.None)]
public int (or string or w/e) Id { get; set; }
您是尝试先使用代码还是首先使用数据库,或者您是如何尝试创建模型的?如果需要,我可以用更多细节编辑我的答案。