Использование вложенных классов с Entity Framework - PullRequest
0 голосов
/ 27 апреля 2011

Я пытался сделать это в конструкторе, но я не смог понять это. Можно ли сохранить вложенные классы с помощью Entity Framework?

Примечание: мне просто любопытно, возможно ли это или нет. На данный момент я не могу думать, будет ли когда-нибудь причина для этого, но было бы неплохо узнать, как, если это возможно.

Пример:

public class NormalClass
{
    public class NestedClass { }
}

Обновление:

У Дэнни Варода была хорошая идея, как этого добиться. Когда у меня будет свободное время, я опробую его и опубликую результаты здесь, если кто-то еще не доберется до него первым.

Ответы [ 2 ]

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

EF-классы объявлены partial, поэтому вы можете добавить к ним все, что захотите.

Обратите внимание, что свойства внутреннего класса не будут сохранены в БД, если вы этого хотите, используйтевместо этого свойство навигации.

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

Вложенный класс в .NET в основном совпадает с классом на другом уровне пространства имен (допустим, внутренний класс может обращаться к закрытым частям внешнего класса, как отметил Ладислав Мрнка, - вы можете использовать внутренний вместо частногочтобы обойти это), нет никаких изменений в поведении (в отличие от Java), поэтому нет особого смысла в использовании вложенных классов.

Вы можете определить подобъекты, используя сложные свойства илиоднако, используя свойства навигации, сложные свойства имеют ограниченные возможности (без свойств навигации или ключей в них), и ни один из них не создается как вложенные классы.

Чтобы заставить EF использовать вложенные классы, вы можете попробовать создать классы самостоятельнозатем сопоставьте их либо с использованием подхода Code-First, либо отменив автоматическое создание класса и записав их самостоятельно (или изменив файл .tt на созданные классы, вложенные в него), а затем отредактировав .emdx как XML для сопоставления сущности сдругой класс.

...