2013-11-21 41 views
1

我是Linq To SQL的新手。我正在使用SQLMetal生成类。该工具为表格的表格和列生成Get和Set属性。Linq to SQL:如何生成Public Get和Protected Set属性

在我的应用程序中,Data对象只能在Data Accessor程序集中更新,但是由于对象需要访问数据,因此该对象将被传递给许多其他程序集。我不希望数据被外部程序集修改。我希望他们使用GET属性来访问数据并拥有私人/内部设置。

我该如何做到这一点?任何标准模式/做法?

在此先感谢!

回答

2

您需要为每个表类添加另一个不可变类,您可以在其中投影数据。 Linq to SQL没有按照你所描述的设置进行设置,SQLMetal也没有。

您可以做的另一件事是修改these T4 templates以实现您描述的行为。还有其他的选择; micro-ORM就像Dapper或Massive可能更适合你的情况。

进一步阅读
LINQ to SQL and immutability

+0

感谢您的回复罗伯特。 最初我正在考虑自己开发容器类的传统方法,并使用存储过程来选择/插入/更新数据。这样我就可以完全控制课程的可访问性。我可以创建方法来插入/更新数据,并且只有getter属性,以便数据本身是只读的。 在这种情况下什么是最好的选择 - LINQ的自定义实现还是数据容器的传统方法? –

+0

我想说这取决于你需要多少班。 –