Как я могу скрыть «сеттеры» от всех, кроме одной сборки?

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

В любом случае - на Q, не знаю, возможно ли это. Ищете решение / обходной путь.

У меня есть библиотека классов, только с POCO:

MyCompany.MyProject.Domain.POCO

Эта сборка имеет POCO, как это:

public class Post
{
   public int PostId { get; set; }
   public int Name { get; set; }
      ...
}

Теперь у меня есть другая библиотека классов, которая является моим DAL / Repository и использует Entity Framework 4.0 для сохранения:

MyCompany.MyProject.Repositories

Эта сборка имеет ссылку на проект POCO, поскольку она должна выполнять CRUD-операции над POCO (захватывать объекты БД, проектировать в POCO, возвращать, а также изменять POCO).

Теперь у меня также естьВеб приложение, который имеет ссылку как на сборку POCO, так и на сборку репозитория.

Если я сделаю это:

somePOCO.PostId = 10;

Я получаю SQLException, каксообщения дан является полем IDENTITY в базе данных, и, следовательно, не должно быть задано явно.

Есть ли способ, которым я могускрывать установщик для этих специальных свойств, так что только хранилище имеет доступ к установщику?

Я не могу придумать способ сделать это с помощью обычных модификаторов доступности (поскольку ни один из них не подходит для сценария), вы, ребята, можете придумать обходной путь?

Ответы на вопрос(3)

Ваш ответ на вопрос