Wie kann ich "Setter" vor allen außer einer Assembly verbergen?

Ich habe auf dieses Problem in @ angespie meine andere Frage, aber ich denke, es lohnt sich, es in eine eigene Frage zu zerlegen, da es nicht wirklich von den anderen Szenarien abhängt, die ich erwähnt habe.

Anyways - auf die Q, weiß nicht, ob das möglich ist. Auf der Suche nach einer Lösung / Problemumgehung.

Ich habe eine Klassenbibliothek mit nur POCOs:

MyCompany.MyProject.Domain.POCO

Diese Assembly hat ein POCO wie dieses:

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

Nun habe ich eine andere Klassenbibliothek, die mein DAL / Repository ist, und benutze Entity Framework 4.0 für die Persistenz:

MyCompany.MyProject.Repositories

Diese Assembly enthält einen Verweis auf das POCO-Projekt, da CRUD-Operationen für die POCOs ausgeführt werden müssen (DB-Objekte abrufen, in POCOs projizieren, POCOs zurückgeben sowie ändern).

Now, ich habe auch einInternetanwendun, das sowohl auf die POCO- als auch auf die Repository-Assembly verweist.

Wenn ich das tue:

somePOCO.PostId = 10;

Ich erhalte eine SQLException, als PostId ist ein IDENTITY-Feld in der Datenbank und sollte daher nicht explizit festgelegt werden.

Gibt es eine Möglichkeit, wie ich kannausblende der Setter für diese speziellen Eigenschaften, so dass nur das Repository Zugriff auf den Setter hat?

Ich kann mir keine Möglichkeit vorstellen, dies mit regulären Eingabehilfen zu tun (da keine davon für das Szenario geeignet ist). Können Sie sich eine Problemumgehung vorstellen?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage