我有一个MVC-EF逆向工程师代码第一个模型,并希望使用属性包含另一个表。
public virtual OtherTableModel OtherTableModel{ get; set; }
然而,当我这样做时,我收到错误:
显然,如果有一个edmx,有一种简单的方法可以做到这一点。在这种情况下,两个表都具有完全相同的主键:
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'.
注意:我已经研究过这个错误,但我找到的答案都没有针对逆向工程师代码的第一种方法。
提前致谢!
答案 0 :(得分:1)
您需要在Table1中配置关系。 EF可以确定关系,如果你给它命名[table] + Id:
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);
}
}