2014-11-05 2 views
10

Я только начинаю с Entity Framework, и меня беспокоит легкость, с которой первичный ключ может быть переопределен. Я знаю, что могу защитить эту модель в своем контроллере (я использую WebAPI с ASP.NET MVC 5), но мне интересно, можно ли запретить кому-либо устанавливать идентификатор моей модели из самой модели через аннотации или что-то еще?Могут ли частные сеттеры использоваться в модели сущности?

В принципе я могу это сделать:

public int ID { get; private set; } 

или что-то подобное, в модели Ef6?

Если это легко найти через Google, то я не знаю терминов для поиска. Я не смог найти ничего, что действительно отвечает на это.

+1

Похоже, вы можете. Я просто попробовал это с помощью своего учебного приложения Mvc Movie с сайта asp.net. Если вы не уверены, что он будет работать, а поиск google не удастся, попробуйте! Но задавать вопросы тоже не повредит: P. –

+0

Я, я должен был. Я просто хочу увидеть там какую-то документацию и надеюсь, что этот вопрос станет хорошим местом для жизни в следующий раз, когда кто-то посмотрит. Если хотите, добавьте ответ. Благодаря! – OneHoopyFrood

ответ

12

Да, вы можете, и он должен работать нормально. За this blog post Джули Лерман (Кто в компании Microsoft Entity Framework MVP, поэтому я настоятельно рекомендую вам прочитать ее блог на своем пути через EF!):

Entity Framework требуется конструктор без параметров для того, чтобы материализовать объекты возвращаются из запросов (или погрузка). Я сделал этой концессии в своем классе, но заметьте, что это частный конструктор . Поэтому я все еще защищаю свой класс. Никто не может получить к нему доступ. Но EF все еще может заполнить этот класс, когда я выполняю запросы. И нет, я не делаю волшебства, чтобы сказать EF, чтобы использовать мой публичный конструктор . Он действительно использует частный конструктор.

+3

Julie Lerman - мой автоматический переход на такие вещи. Я буквально просто искал «Юли Лерман», даже не подозревая, что она уже говорила об этом. – IronMan84

Смежные вопросы