C# 在实体框架中,生成模型后是否可以“向[表名]实体添加外键属性”?

C# 在实体框架中,生成模型后是否可以“向[表名]实体添加外键属性”?,c#,asp.net,database,entity-framework,C#,Asp.net,Database,Entity Framework,我们有一个大型实体模型,已经建立了x年,我想知道是否有以下可能: 我们有很多旧的实体,我们不直接将外键公开给其他表,但它们在实体框架中有关联。i、 e.表1与表2有一对多关系,表2在数据库表上有一个Table1_ID字段,但我无法从我的C/Entity框架代码中访问该字段。是否有一种干净的方式来显示/添加此内容而不删除关联并读取它? 这是在Model First Entity Framework中您可以使用数据注释并在Table2模型上添加属性: 如果您使用的是fluent api,您可以这样配

我们有一个大型实体模型,已经建立了x年,我想知道是否有以下可能: 我们有很多旧的实体,我们不直接将外键公开给其他表,但它们在实体框架中有关联。i、 e.表1与表2有一对多关系,表2在数据库表上有一个Table1_ID字段,但我无法从我的C/Entity框架代码中访问该字段。是否有一种干净的方式来显示/添加此内容而不删除关联并读取它?
这是在Model First Entity Framework中

您可以使用数据注释并在Table2模型上添加属性:

如果您使用的是fluent api,您可以这样配置它:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Table2>() 
        .Property(t => t.Table1Id) 
        .HasColumnName("Table1_ID");
}

对不起,我忘了先说是模特:谢谢though@Thomas-模型首先使用EDMX文件,而不使用迁移。@ScottBecker,哦,好的,您使用的是旧版本的EF。我没有注意到你的问题,也没有仔细阅读。很抱歉。@Thomas很好,很抱歉,哈哈,我忘了还有比我们更新得多的版本。但是我不能从我的C/Entity框架代码中访问它为什么不能?如果这是数据库优先,我不认为它是模型优先,因为您生成了EDMX?,列应该是EDMX的一部分,不是吗?@GertArnold在添加关联时公开生成的列是可选的,这是其他人编写的旧代码,不包括属性,因此它位于生成的表上,但是我不能做Table2.Table1\u ID,我只能做Table2.Table1,这意味着我需要包含该表来查询它,而我只需要ID字段。我的基本问题是,你不能更改代码吗?与独立关联相比,在类模型外键关联中公开基本FK属性要容易得多。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Table2>() 
        .Property(t => t.Table1Id) 
        .HasColumnName("Table1_ID");
}
public partial class Add_Table1_Reference_To_Table2_Model : DbMigration
{
    public override void Up()
    {
    }

    public override void Down()
    {
    }
}