свойство навигации каркаса сущности к таблице в другой базе данных - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть 2 таблицы в разных дБ

db1..Towns
    id
    Nazv

db2..MathchedTown
    id
    t_id
    d_name

К ним присоединяется по Towns.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; }

    }

, когда я пытаюсь получить элемент.town.nazv я получаю сообщение об ошибке: Неверное имя объекта 'dbo.Towns'.Если я изменю [Table ("Towns")] на [Table ("db1.dbo.Towns")], то появится почти та же ошибка: Неверное имя объекта 'dbo.db1.dbo.Towns'.

Что все ошибки SqlExceptions

Как я могу говорить EF4, не подставляйте "dbo".Приставка

Ответы [ 2 ]

1 голос
/ 23 сентября 2011

Entity Framework не поддерживает несколько баз данных в одном контексте. Но он поддерживает несколько схем в одной базе данных. Если вы не укажете схему, она примет dbo.

[Table("Towns", "MySchema")]
public class Town

Вы можете указать схему, как указано выше.

Если вы хотите использовать таблицу в другой базе данных, вы можете создать представление для этой таблицы в своей базе данных. Но это будет только для чтения.

0 голосов
/ 23 сентября 2011

К сожалению, EF4 не поддерживает свойство навигации, которое есть в других БД.У вас есть два варианта.

Один, создать хранимую процедуру и импортировать ее как функцию в EDM.И сгенерируйте сложный тип для возвращаемого результата.

Два, создайте две модели сущностей для каждой базы данных.И запустите запрос для базы данных, затем запустите другой запрос к другой базе данных с предложением where из первого результата запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...