EF4 CTP5 - Карта внешнего ключа без ссылок на объекты?
Я чувствую, что у этого должен быть простой ответ, но я не могу найти его.
У меня есть 2 POCO:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
}
public class Product
{
public int Id { get; set; }
public int CategoryId { get; set; }
}
Обратите внимание, что в POCO нет ссылок на объекты. С Code-First, как мне заставить EF4 CTP5 определять отношения между двумя таблицами базы данных?
(Я знаю, что это необычный сценарий, но я изучаю, что возможно, а что нет с Code-First)
2 ответа
Решение
Нет, это невозможно. Как вы можете видеть ниже, все беглые методы API для установки ассоциаций требуют указания Navigation Property
как их параметр.
HasMany<TTargetEntity>(Expression<Func<TEntityType, ICollection<TTargetEntity>>> navigationPropertyExpression)
HasOptional<TTargetEntity>(Expression<Func<TEntityType, TTargetEntity>> navigationPropertyExpression)
HasRequired<TTargetEntity>(Expression<Func<TEntityType, TTargetEntity>> navigationPropertyExpression)
Есть ли какая-то особая причина, по которой вы не хотите использовать ссылки на объекты? Это выглядит очень элегантно, чтобы использовать их:
public class Category
{
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
public class Product
{
public int Id { get; set; }
public Category Category { get; set; }
}
И вы по-прежнему можете получить доступ к идентификатору категории через ваш продукт как product.Category.Id
,