C# 以编程方式在客户端计算机上创建SQL Server Compact数据库
我最近开始试验SQLServerCompact和EF6。我目前正在使用模型优先的方法,并从中生成我的类和表。不过,有一件事我很好奇。如何让我的程序动态创建数据库。它存在于我使用SQLServerCompact/SQLite工具包创建的计算机上,但当程序部署到客户端计算机时,将需要创建数据库 我希望在第一次运行时提示他们找到一个好的位置,然后创建整个DB模式,并在将来使用它。我查看了一下,但vs开始抱怨它不起作用,因为我没有使用代码优先的方法C# 以编程方式在客户端计算机上创建SQL Server Compact数据库,c#,.net,ado.net,sql-server-ce,C#,.net,Ado.net,Sql Server Ce,我最近开始试验SQLServerCompact和EF6。我目前正在使用模型优先的方法,并从中生成我的类和表。不过,有一件事我很好奇。如何让我的程序动态创建数据库。它存在于我使用SQLServerCompact/SQLite工具包创建的计算机上,但当程序部署到客户端计算机时,将需要创建数据库 我希望在第一次运行时提示他们找到一个好的位置,然后创建整个DB模式,并在将来使用它。我查看了一下,但vs开始抱怨它不起作用,因为我没有使用代码优先的方法 如果你需要更多的信息,让我知道!谢谢。我有一个正在使用
如果你需要更多的信息,让我知道!谢谢。我有一个正在使用SQL CE和EF开发的小应用程序,我在安装该应用程序时部署了模板数据库(clickonce)。然后,我在应用程序启动时使用spash屏幕加载以前创建的数据库,或者让用户创建一个新的数据库 当他们创建一个新的db时,我只需提示他们输入一个位置,然后用他们想要的名称将模板数据库复制到他们想要的位置。我还将其设置为使用已部署的数据库,而不让他们有机会拥有多个数据库文件 我们在这里处理以下几件事:
复制到输出目录-始终复制
Public Module Globals
Friend g_recipeData As RecipeEntities
End Module
类型:字符串
范围:用户
价值:
Public Module Globals
Friend g_recipeData As RecipeEntities
End Module
表格上的控件如下所示:
txtFilecmdSelectDatabase
cmdNew
cmdOpen
cmdExit
Public Sub New()
InitializeComponent()
g_recipeData = New RecipeEntities
End Sub
如果在模块文件中创建变量时执行上述操作,则实体的连接字符串已设置,您无法更改它。您必须首先在app.config中设置连接字符串(使用上述代码),然后实体将在实例化时使用所需的连接字符串
我认为这是目前的基本情况。我强烈建议你现在再读一遍,我已经完成了。我做了一些更正,甚至为lastpath设置添加了一个步骤。如果有什么事情不起作用或让人困惑,请打电话给我,我会尽力帮助你。祝你好运 您可以使用SqlCeEngine.CreateDatabase创建一个空数据库,并运行sql脚本来创建所需的对象。嗨,erik!谢谢你所有伟大的工作!我假设您推荐此路径,因为EF不提供任何运行时数据库生成?我的意思是:有没有办法在运行时获取用于创建数据库的原始SQL,并将其用作您所指的“SQL脚本”?嘿!这听起来正是我想做的。如果你愿意分享你的代码,我将非常感激。如果没有,我也很高兴了解自己,如果你能给我指出正确的方向,只是到现在为止,我不知道;我甚至不知道该找什么…我找到你了,先生。我现在在上下班路上骑车回家,一到那里我就会提供一些代码供你使用。待命。非常感谢!!!!我真的很感激你为此付出的努力。我将仔细阅读你写的每一行,并从中尽可能多地学习。这真是一个很棒的答案,我非常感谢你抽出时间来回答我的问题!!!你明白了,兄弟。我在SQL CE和EF方面很难得到帮助,所以我想提供帮助。必须删除注释和大量错误处理,但方法名称应该会有所帮助。我也有代码来处理密码,包括设置它,所以让我知道,如果你想要它。如果你需要什么,祝你好运并大声叫喊。
Public Sub New()
InitializeComponent()
g_recipeData = New RecipeEntities
End Sub