我们可以使用 SQLMetal Objectmodel 作为应用程序对象模型吗?

Can we use SQLMetal Objectmodel as application object model?

我们的团队刚刚开始使用 Sql Metal,我已经使用了 2 天。在这样做的时候,我注意到了几件事。

  1. 当我们运行命令如下

sqlmetal /code:ps.cs /server:devapp042dbs /database:promotionalsponsorship /namespace:DAL

它创建一个 "LINQ to SQL SQLMEtal" 对象模型。现在,这不是我们的常规 class。它有很多自动生成的代码,它几乎闻起来像 LINQ/EF,有很多自动生成的属性和方法。

我使用过 Service stack 中的 Dapper 和 ORMLite 等微型 ORM,它们的优点在于它可以与我们创建的简单对象模型一起使用,而不是自动生成自己的对象模型。

我的问题是 我们可以使用这些 SQLMetal 映射 classes 作为我们的应用程序模型,还是我们必须围绕它创建一个简单的包装器 class 我们使用它可以提取我们需要的所有信息。

为了阐明我的观点,以下是我称之为 SQL Metal Class and a simple model class

的示例

虽然这个问题可能会被关闭,因为答案是主观的,简短的回答是,使用这样的自动生成的类集合是完全有效的作为你的模型。有很多以这种方式构建的成功应用程序。

由于这些 类 是部分的,您甚至可以通过添加自定义 properties/methods/events.

来扩展您的领域模型

如果您担心自动生成的代码不够干净,请考虑 Entity Framework、nHibernate 或支持此方案的任何其他 ORM 的 code first 方法.这样您就可以从一个干净的 POCO 模型开始,只需定义它到关系结构的映射。