实体框架-EF Code First Select外键

Posted

技术标签:

【中文标题】实体框架-EF Code First Select外键【英文标题】:Entity framework- EF Code First Select foreign key 【发布时间】:2017-07-02 08:33:34 【问题描述】:

型号:

public class Address

    [Key]
    public long AddressId  get; set; 

    public string Street  get; set; 

    public string Town  get; set; 

    public string State  get; set; 

    public string Country  get; set; 

public class User

    [Key]
    public long UserId  get; set; 

    public string UserName  get; set; 

    public string Password  get; set; 

    public virtual List<Address> Addresses  get; set; 

数据库上下文:

public class DataModelContext : DbContext

        public DbSet<Address> Addresses  get; set; 
        public DbSet<User> Users get; set; 

使用上面的代码为 DB 创建这个模式。

Addresses          Users
-----------        -------
AddressId(PK)      UserId(PK)
Street             UserName 
Town               Password 
State  
Country 
User_UserId(FK)

现在我想从 Addresses 表中访问 User_UserId,但它没有在那里显示任何属性。它给出的错误“地址不包含 User_UserId 的定义.....

using (var db = new DataModelContext())

       db.Addresses.Select(x=>x.User_UserId).ToList();

【问题讨论】:

【参考方案1】:

在创建模型时使用外键关联而不是独立关联。这意味着,您必须在模型中包含外键属性以及相应的导航属性。例如:

public class Address

    ...
    public int UserId get; set; //Foreign-Key property

    [ForeignKey("UserId")]
    public virtual User User  get; set;  // Navigational Property  
    ...

阅读this article了解更多信息。

【讨论】:

以上是关于实体框架-EF Code First Select外键的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义 ID 插入数据的 Code-First 实体框架

Entity Framework学习-实体框架中的code-first迁移

EF Code First 初试

EF之Code First代码优先

EF 中 Code First 的数据迁移以及创建视图

EF Code First:实体映射,数据迁移,重构