我有一个项目创建可在两种模式下运行的程序:如何为SQL Server Compact和SQL Server使用相同的EF实体?
内部用户访问一个集中的数据库(SQL Server),并可以查看/编辑每个人的项目,或
外部客户在本地创建自己的所有数据(SQL Server Compact),并通过电子邮件将其打包为XML以请求报价。
问题是,如何最大限度地减少维护并最大限度地提高EF功能?我还想在SQL Server中使用存储过程进行写入操作,但如果太麻烦,这不是首要任务。
我可以在部署之前手工创建单独的SSDL,但这是额外的工作并且容易出错。我可以去Model First,但我认为这会使两个提供商的数据库更新变得复杂。我可以使用DbContext Generator T4模板去代码优先的方向,但是然后我失去了很多EF好处,比如更改跟踪和存储过程映射。而对于CF,我必须大大增强T4模板,或者我仍然需要创建一个单独的SSDL。
是否有文章或任何工具可以使这更容易?
编辑:我决定实现这一目标的最佳方式是使用Code First创建我的模型并使用新的代码优先迁移。通过迁移,我可以为整个服务器实例生成一个更改脚本,我可以在本地CE数据库上应用完整的更改。另一个好处是我可以完全控制连接字符串,并且可以真正指向任何提供者。
这是一些额外的工作由手工打造的POCO类,创建配置类(我更喜欢用流利的API定义),并以群众演员(如唯一索引)添加到第一个移民类,但在结束其最少的工作。
我将不得不弄清楚如何在稍后的日期分流存储过程的使用情况,但EF 5可能可用,并已解决我的问题。
感谢您的回复。由于大部分数据库访问都是读取操作,因此我仍然设想高度重用。但为了安全起见,我不想让每个人都可以访问CUD操作。除此之外,我对所有其他限制因素都很满意。我只是寻找最方便的方式来做到这一点。 – 2012-03-19 21:34:15