我试图了解.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类完好无损?
至少我想要的只是为我生成类的工具,一旦生成它就不再触摸它。如果我已正确理解ADO.NET C#POCO实体生成器,它就不会那样做。那里有更好的工具还是我应该坚持按照我的要求手工编写我的poco类?你觉得怎么样?
对不起,如果我的问题有点令人困惑;我写这篇文章时对这个主题的理解有限且可能是错误的。谢谢你的时间......
答案 0 :(得分:1)
POCO类生成器可以帮助您通过更改生成它们的T4模板来自定义生成过程,并将它们从包含EDMX的项目中分离出来。 这对于测试来说非常有用,您可以使用自定义生成器或其他数据馈送结构替换EDMX,这些结构填充您生成的类,这些类可能与edmx本身完全不同。
至于自定义,您只需要将这些类声明为Partial(不确定这是否为默认值,但可以在T4模板中轻松更改)。所以你要做的是有另一个文件代表持有自定义代码的类的一部分。这样,您可以在重新生成类时自定义类而不会丢失更改。
如此长的答案,您应该坚持使用POCO Generator,因为它简化了将DB表映射到类的整个过程。