Entity Framework 上的 ForeignKey 属性
ForeignKey attribute on Entity Framework
假设我有一个 class 拍卖会
public class Auction {
[Key]
public int Id { get; set;}
public User Seller {get; set;}
public User Winner {get; set;}
}
和一个 class 用户
public class User {
[Key]
public string Username {get;set;}
public string Password {get; set;}
}
如何在 Visual Studio 上使用 ForeignKey 属性将 Seller 和 Winner 设置为 FK?
编辑
我使用 [key] 属性是因为我在数据库中有其他表并且它们的 PK 不称为 id,所以我在每个 class 中使用属性 [key] 来使用相同的样式。
当我尝试使用现有用户上传拍卖的卖家时,它说
The ForeignKeyAttribute on property 'Seller' on type 'Database.Auction' is not valid. The foreign key name 'User' was not found on the dependent type 'Database.Auction'. The Name value should be a comma separated list of foreign key property names.
正是出于这个原因,我想指定 FK
他们已经在你的 Auction
class 中被 FK。它们将被映射为 FK。您以后可能想使用延迟加载,所以:
public class Auction {
public int Id { get; set;}
public virtual User Seller {get; set;}
public virtual User Winner {get; set;}
}
此外,您不需要 属性 上面的 [Key]
注释称为 Id
。
编辑问题后更新:
您可能需要启用迁移。转到包管理器控制台,如果它没有打开,您可以通过 Visual Studio.
菜单栏的菜单视图打开它
然后在里面写enable-migrations
回车,然后把生成的class里的AutomaticMigrations
设置成true
,然后再在Package Manager控制台里写update-database
, 运行 你的申请。
脚注:
你没有说明你正在创建什么样的应用程序,但通常保留用户密码是个坏主意。您通常假设保留它的散列版本。
假设我有一个 class 拍卖会
public class Auction {
[Key]
public int Id { get; set;}
public User Seller {get; set;}
public User Winner {get; set;}
}
和一个 class 用户
public class User {
[Key]
public string Username {get;set;}
public string Password {get; set;}
}
如何在 Visual Studio 上使用 ForeignKey 属性将 Seller 和 Winner 设置为 FK?
编辑
我使用 [key] 属性是因为我在数据库中有其他表并且它们的 PK 不称为 id,所以我在每个 class 中使用属性 [key] 来使用相同的样式。
当我尝试使用现有用户上传拍卖的卖家时,它说
The ForeignKeyAttribute on property 'Seller' on type 'Database.Auction' is not valid. The foreign key name 'User' was not found on the dependent type 'Database.Auction'. The Name value should be a comma separated list of foreign key property names.
正是出于这个原因,我想指定 FK
他们已经在你的 Auction
class 中被 FK。它们将被映射为 FK。您以后可能想使用延迟加载,所以:
public class Auction {
public int Id { get; set;}
public virtual User Seller {get; set;}
public virtual User Winner {get; set;}
}
此外,您不需要 属性 上面的 [Key]
注释称为 Id
。
编辑问题后更新:
您可能需要启用迁移。转到包管理器控制台,如果它没有打开,您可以通过 Visual Studio.
菜单栏的菜单视图打开它然后在里面写enable-migrations
回车,然后把生成的class里的AutomaticMigrations
设置成true
,然后再在Package Manager控制台里写update-database
, 运行 你的申请。
脚注:
你没有说明你正在创建什么样的应用程序,但通常保留用户密码是个坏主意。您通常假设保留它的散列版本。