使用旧数据库,仅升级数据访问层无法在表上添加密钥。
现在的问题是假设有2个表(Table1和Table2)。两个表都具有一对一关系,但未定义外键。
当没有连接时,如何获取第二个表的数据?有没有办法在1次调用时检索数据,而不是在db上检索2个不同的调用?
我试过这种方式
context.Table1.Include("Table2").AsExpandable().FirstOrDefault(x => x.ID == id);
但是收到此错误
指定的包含路径无效。 EntityType''未声明名称为''的导航属性。
是否有任何解决方案,或者我必须进行2次不同的调用才能检索数据。
第一表Table1
public partial class Table1
{
public long ID { get; set; }
}
第二表Table2
public partial class Table2
{
public long ID { get; set; }
public long Table1ID { get; set; }
}
使用分区类手动映射表2中的表1.
public partial class Table2
{
public virtual Table1 Table1 { get; set; }
}
现在通过这种方法调用
var Table2= context.Table2.Find(id);
if (Table2 != null)
{
Table2.Table1 = context.Table1.Find(Table2.Table1ID)
}
现在有两个数据库调用,我们可以使用实体框架中的包含方法进行一次调用