在Entity Framework Core中的其他上下文中加载属性

时间:2018-02-28 12:46:48

标签: entity-framework asp.net-core entity-framework-core

我有两个独立的数据库,因此在ASP.Net Core / EFCore中有两个独立的DbContext。

我有一个在一个数据库中的对象,它有一个指向另一个数据库的“外键”。

假设我有一个充满事件的数据库,另一个有城市的地理数据库。 我的活动课上有一个cityId。

public class Event
{
  public int Id {get;set;}
  public string Name {get;set;}
  public string CityId {get;set;}
  public virtual City City {get;set;}
}

public class City
{
  public int Id {get;set;}
  public string Name {get;set;}
}

在查询第一个DbContext时,是否可以Include以某种方式使用City属性?

2 个答案:

答案 0 :(得分:3)

没有。这是不可能的,你必须独立查询其他背景。

var event = eventContext.Events.Find(eventId);
event.City = geoContext.Cities.Find(event.CityId);

FWIW,您应该将City上的Event属性标记为NotMapped。否则,EF将在与Cities相同的数据库中创建Events表,并在Events上向该表添加实际外键,即使City实际上是由var str1 = `{ sayHello: function() { console.log('hello'); }, content: "I'm a content", }`; 管理的不同的背景。

答案 1 :(得分:0)

Dbcontext是数据库的一些范围!

你只能存储一些int值!没有导航属性!

因为数据库中的所有外键都无法引用另一个数据库! Ef核心是对数据库的一些抽象!许多RDBms不允许外键到另一个数据库!

你可以触发一些诚信! Add Foreign Key relationship between two Databases

这是一个不太好的做法!