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,

Другие вопросы по тегам