我在不同的数据库中有2个表
db1..Towns
id
Nazv
db2..MathchedTown
id
t_id
d_name
他们由TowTowns.id = MathchedTown.t_id加入 这个EF课程:
[Table("Towns")]
public class Town
{
[Key]
public int id { get; set; }
public string Nazv { get; set; }
}
[Table("MathchedTown")]
public class mTown
{
[Key]
public int id { get; set; }
[Required]
public string t_id{ get; set; }
[Required]
public string d_name{ get; set; }
[ForeignKey("t_id")]
public virtual Town town { get; set; }
}
当我尝试获取item.town.nazv时出现错误: 无效的对象名称'dbo.Towns'。 如果我将[Table(“Towns”)]更改为[Table(“db1.dbo.Towns”)],则会出现几乎相同的错误:无效的对象名称'dbo.db1.dbo.Towns'。
所有错误都是SqlExceptions
我怎么说话EF4不会替代“dbo”。前缀?
答案 0 :(得分:1)
实体框架不支持单个上下文中的多个数据库。但它支持单个数据库中的多个模式。如果您未指定架构,则会假定dbo
。
[Table("Towns", "MySchema")]
public class Town
您可以按上述方式指定架构。
如果要在其他数据库中使用表,可以在数据库中创建该表的视图。但它将是只读的。
答案 1 :(得分:0)
不幸的是,EF4不支持其他数据库中的导航属性。 你有两个选择。
一,创建存储过程并将其作为函数导入到edm中。并且返回结果的genetate复杂类型。
二,为每个数据库创建两个实体模型。然后对数据库运行查询,然后使用第一个查询结果中的where子句将另一个查询运行到另一个数据库。