MVC-EF 逆向工程代码首先包含另一个 table

MVC-EF Reverse Engineer Code first include another table

我有一个 MVC-EF 逆向工程代码优先模型,并希望使用 属性.

包含另一个 table
 public virtual OtherTableModel OtherTableModel{ get; set; }

但是,当我这样做时,出现错误:

显然,如果有 edmx,就有一种简单的方法可以做到这一点。在这种情况下,两个 table 具有完全相同的主键:

string id {get; set} 

如何让 include 命令起作用?

在我的控制器中,代码是:

ourList = db.Table1.Include(t => t.OtherTableModel)

我得到的错误是:

An exception of type 'System.InvalidOperationException' occurred in      
EntityFramework.SqlServer.dll but was not handled in user code

Additional information: A specified Include path is not valid. The 
EntityType Solution1.Models.User' does not declare a navigation property 
with the name 'OtherTableModel'.

注意:我研究了这个错误,但我找到的 none 答案是针对逆向工程代码优先方法的。

提前致谢!

您需要配置表1中的关系。如果您将其命名为 [table] + Id:

,EF 可以确定该关系
public string OtherTableId {get; set;}
public OtherTableModel OtherTableModel {get; set;}

或者您可以添加注释:

[ForeignKey("Id")]    
public OtherTableModel OtherTableModel {get; set;}

或者你可以使用我喜欢的流利 API:

public class Table1Configuration : EntityTypeConfiguration<Table1>
{
    public Table1Configuration()
    {
        HasRequired(p => p.OtherTableModel)
            .WithMany(p => p.Table1s)
            .HasForeignKey(p => p.Id)
            .WillCascadeOnDelete(false);
    }
}