EF4 CTP5 - Карта внешнего ключа без ссылок на объекты? - PullRequest
0 голосов
/ 06 марта 2011

Мне кажется, у этого должен быть простой ответ, но я не могу его найти.

У меня есть 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 ]

0 голосов
/ 06 марта 2011

Есть ли какая-то особая причина, по которой вы не хотите использовать ссылки на объекты? Это выглядит очень элегантно, чтобы использовать их:

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.

0 голосов
/ 06 марта 2011

Нет, это невозможно.Как вы можете видеть ниже, все беглые методы 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) 
...