EF 4.1 Code First Sql CE Иностранные ключи без навигационных свойств - PullRequest
0 голосов
/ 13 апреля 2011

Вот интересный вопрос, у нас есть 2 класса (обратите внимание, что это просто глупость, чтобы прояснить мою проблему)

class Foo
{
    public int Id { get; set; }
}

class Bar
{
    public int Id { get; set;}
    public int FooId { get;set;}
}

Теперь, используя Code First в EF 4.1, я хочу следующее: Foo имеет 0или больше баров с включенным каскадным удалением.Это легко выполнимо, сделав фактические свойства в моделях (Коллекция Bar в foo), но модели также являются DTO и, следовательно, не могут иметь дополнительные свойства для них (например, если вы хотите, чтобы все Bar были для данного Foo, вам нужноспросите Сервис в конкретном запросе).

Есть ли способ сделать это?В настоящее время у меня есть копия Foo и Bar, специально предназначенная для EF, где мой репозиторий переводит между репликой и фактическим DTO.

Я надеюсь, что есть лучшие способы, если так, пожалуйста, научите меня.

Спасибо!

1 Ответ

0 голосов
/ 13 апреля 2011

Как и , описанное здесь , вам всегда нужно свойство навигации по крайней мере на одной стороне, если вы хотите создать реализацию FK с использованием подхода «сначала код».Если ваш класс DTO, вы можете пометить его атрибутами для сериализации.Например, при использовании WCF с DataContractSerializer вы можете использовать:

public class Bar
{
    public int Id { get; set; }
    public int FooId { get; set; }
    [IgnoreDataMember]
    public Foo Foo { get; set; }
}

Если вы используете сущность в качестве DTO, не должно быть проблем с использованием дополнительных атрибутов.

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