在NHibernate中我们可以先写好实体类,然后根据配置文件生成数据库,这是非常OO的思维。在面向对象的开发设计中,只有那些需要持久的类最终才会存储到数据库中。由于需求的变化,可能会引起类的变动,而且这种变化是常见的、正常的,最后类的存储也是要发生变化的,这样首先设计好数据库反而不方便,也没有必要。
在vs.net2008中Ms提供了两种R
->O工具,命令行SqlMetal方式及可视化操作方式,这样给人造成了一个错觉,以为使用Linq to Sql必须首先设计好数据库,然后再映射到实体。
既然Linq to Sql可以做到R
->O,那么反向的O
->R肯定是存在的,Ms没有SB到这种地步。只是有些人对MS有意无意的偏见造成了思维定势,喜欢睁着眼睛说瞎话,前几天还看到有人在骂街。其实只要去查一下资料或者在电脑上试一下,问题就解决了。很简单,只需要在生成的DataContext实例上“点”一个就可以看到结果了。如果喜欢或者工作需要,必须掌握MS的技术,就应该保持良好心态,多动脑子少动嘴,如果不喜欢就干脆别学了。
Linq to Sql从实体映射到数据库,是非常方便的,或者说没有见过这么方便的。
可能有这样两种情况,一种情况是实体与数据库之间的映射已经完成过,现在修改了实体,再次把变化映射到数据库,这个随时可以实现:
DbDataContext
db = new DbDataContext();//
连接字符串放在DbDataContext构造函数中了
if
(db.DatabaseExists()) {
db.DeleteDatabase();
}
db.CreateDatabase();
这样就把以前的数据库删除重建了,假如想保留以前的,另建一个的话,在连接字符串中指定另一个数据库就行了(数据库可以不存在,会自动建一个)。
另一种情况是现在编写好实体类了,准备映射到数据库,明白了上面的方法,就不用啰嗦了。