Во-первых, немного контекста
У меня есть одно настольное приложение, которое использует базу данных Paradox, и я разрабатываю новое приложение ASP.NET с использованием SQL Server для замены текущего рабочего стола.приложение.
Переход будет происходить в три этапа.Первая версия веб-приложения будет использовать SQL Server и Paradox одновременно.Данные об унаследованных объектах будут поступать из Paradox, а данные о новых объектах - из SQL Server.Таким образом, настольная и веб-версии приложения могут использоваться взаимозаменяемо.
На втором этапе все данные из Paradox будут импортированы в SQL Server.Старое настольное приложение (и Paradox db) больше не будет использоваться.
Теперь технический вопрос
Представьте простую модель с двумя сущностями:
public class Customer
{
public Int32 ID { get; set; }
public String Name { get; set; }
virtual public IList<User> MyUsers { get; set; }
}
public class User
{
public Int32 ID { get; set; }
public String Name { get; set; }
virtual public Customer MyCustomer { get; set; }
}
public class SqlServerContext : DbContext
{
public SqlServerContext()
{
base.Configuration.ValidateOnSaveEnabled = false;
base.Configuration.LazyLoadingEnabled = true;
base.Configuration.ProxyCreationEnabled = true;
base.Configuration.AutoDetectChangesEnabled = true;
}
public DbSet<User> Users { get; set; }
public DbSet<Customer> Customers { get; set; }
}
Когда я использую только SQL Server для обоих объектов, все работает нормально.Но теперь я хочу получить данные о клиентах из Paradox и данные о пользователях из SQL Server.
Затем я создаю хранилище для клиентов с базовым OleDbConnection с использованием поставщика Paradox.Конечно, Entity Framework по-прежнему создает таблицу «Клиенты» в SQL Server, поскольку у пользователя есть свойство «Клиент».
Затем я удалил отношение базы данных (FK) между пользователем и клиентом.Теперь я могу вставить пользователя, связанного с клиентом, даже если они находятся в разных базах данных.
Проблема заключается в следующем: когда я пытаюсь получить пользователя из базы данных [например: context.Users.Find (id)] Я могу прочитать идентификатор пользователя и имя, но user.Customer имеет значение null.Я ожидал получить идентификатор клиента через свойство user.Customer.ID , поскольку эти данные находятся в таблице Users в SQL Server.
Собираюсь ли я по правильному пути?Если да, то как EF может принести идентификатор клиента для пользователя?
И если нет, то какой будет хороший подход для этого сценария?Я не хочу показывать свойства внешнего ключа в модели (то есть: я не хочу иметь свойство int CustomerId в сущности User).
Заранее спасибо!