2012-02-12 59 views
3

我想了解.NET中的poco生成器应该做什么。在我看来,他们应该是代码生成工具,它允许我从我的edmx文件中选择我想创建POCO的实体,并根据表的字段生成类,同时允许我自定义生成的poco名称,使它不同从我的edmx designer.cs文件中生成的类名称。比如说:我有一个名为Customer的表,它在edmx文件中被命名为Customers。现在,poco生成工具应该允许我创建一个名为say,BusinessCustomers的类。然而,尽管他们在生成类时没有允许我自定义生成的类名,但我注意到当从this example生成这样的pocos时,它们倾向于仍然是代码生成工具所拥有的类。生成的poco类是一个名为Customers的分部类,它基本上是edmx类的扩展。我不能有选择地选择我想要生成pocos的实体。因此,如果我对生成的类进行了更改,那么随时将新表添加到edmx文件并希望使用此工具创建新的pocos时,它们将会丢失。我当然可以将生成的类复制到另一个项目并从那里使用它们,但我不确定这是否是正确的方法。 在我上面的示例中,生成的poco类是一个名为Customers的分部类,具有虚拟属性,表中的每个字段都有一个。 edmx designer.cs被擦干净。我仍将使用我的代码中由该工具生成的类。如果我想要一个单独的poco类,我仍然必须自己编写它...难道不是poco生成器应该为我创建一组新的类,使edmx类完好无损吗?了解POCO生成器

在最低限度,我要的是生成对我来说类和一旦其与产生它做不会再去碰它的工具。如果我已经正确理解了ADO.NET C#POCO实体生成器,它不会那样做。有没有更好的工具,或者我应该坚持为我的需求编写我的poco课程?你怎么看?

对不起,如果我的问题有点混乱;我写这篇文章的时候对这个主题的理解有限,也许不正确。感谢您的时间...

回答

1

POCO类发电机是有帮助你通过改变产生他们T4模板自定义生成过程,并且还从EDMX含项目除了打破它们。 对于说测试来说,这可能非常有帮助,在这种情况下,您可以用自定义生成器或其他一些数据馈送结构来替换EDMX,这些数据馈送结构会填充生成的类,这些类可以与edmx本身完全不同的项目中。

至于定制所有你需要做的就是声明这些类的部分(不知道这是默认的,但可以很容易改变,在T4模板)。所以你要做的是另外一个文件代表保存自定义代码的类的一部分。这样,您可以在重新生成类时自定义您的类而不会丢失更改。

只要回答总之,你应该用POCO发电机坚持,因为它简化了映射数据库表上课的全过程。

+0

顺便说一句,如果你要编辑T4模板,如果你之前没有做过,你可能会发现这个任务有点嘲讽。有一些不错的工作室插件可以帮助用智能感知和示例编写它们,所以请查看它们。 – masimplo 2012-02-12 22:12:48

+0

生成的poco类是一个名为Customers的分部类,具有虚拟属性,表中的每个字段都有一个。 edmx designer.cs被擦干净。我仍将使用我的代码中由该工具生成的类。如果我想要一个单独的poco类,我仍然必须自己编写它...难道不是poco生成器应该为我创建一组新的类,使edmx类完好无损吗? – user20358 2012-02-12 22:16:01

+0

不,POCO生成器应该将代码从edmx文件中分解出来,然后放入单独的类中,您可以1。通过使用T4进行自定义,2.将它们放在一个不同的项目中,这样实际上使它们成为你的类而不是EF4类,并按照你认为合适的方式使用它们,即使你决定转储EF,3.扩展它们或者在不同的你认为合适的文件。 – masimplo 2012-02-13 22:38:44