我正在开始一个使用数据库的新C#项目,但我希望所有这些都是版本控制的。我正在考虑一个SQL服务器数据库(如果我制作一个mdf文件,我可以在没有安装SQL Server的计算机上使用它吗?)和LINQ to SQL。
你通常如何开始这样的项目?您是否创建.sql文件来创建数据库,然后创建linq模型?还有更好的方法吗?
答案 0 :(得分:4)
这取决于你喜欢什么。您将得到答案,告诉您最好先设计对象模型(程序员会告诉您),然后有些人会告诉您先设计数据模型(数据库管理员)。
最后,正确的方式是你最舒服的方式。如果您觉得要在代码中对数据进行大部分操作,那么从对象模型开始可能是件好事。如果您认为自己将执行数据中的大部分操作,那么从数据库开始就是一件好事。
关于源代码控制,如果要对所有内容进行版本控制,那么您将不得不生成一个sql文件,该文件具有从头开始创建数据库所需的内容。然后,每次更改或更新数据库模式或数据时,都应将该文件放入源代码管理中。我还建议一种命名约定,它将文件的日期和时间合并到文件中,以便在从头开始工作时或之后的任何时间点轻松确定应用文件的顺序。
当然,您也需要对源代码进行版本控制,但这应该不用说了。
答案 1 :(得分:2)
第一个问题:是的,您总是需要在您的计算机上安装sql server才能在本地访问数据库,否则您需要设置服务器以接受外部连接。
第二:不,您不应该将数据库MDF文件存储在源代码管理下。正如您所说,将sql脚本存储在源代码管理中。
第三:我建议查看一个对象关系映射系统,如FluentNHibernate和NHibernate,这样你就不需要在sql中管理除了实际的表create / alter语句和索引之外的任何数据库。
答案 2 :(得分:2)
如果您使用.mdf,您的用户将需要某个版本的SQL Server。对于小型应用程序,您可以使用(免费)SQL Server Express。
至于如何设计解决方案,这可能很困难,但您希望在源代码管理中拥有所有是正确的。很多时候,开发人员不会将他们的数据库代码放在源代码管理中,这总会导致头痛。
问题是在Visual Studio中控制数据库的版本可能很棘手。将更改脚本放在文件夹中很困难,因为您必须记住在设计数据库时创建它们。像字段重命名等简单的事情可能很乏味,因为以正确的顺序执行它们很重要。您可能希望将RikMigrations等迁移框架视为一种方法。对于较大的应用程序,Visual Studio数据库项目(需要新安装,但最近在'Team Developer'Sku中提供)将帮助您控制数据库更改脚本等。