如何以编程方式针对SQL SE数据库编写DDL
本文关键字:数据库 SE DDL SQL 编程 方式针 | 更新日期: 2023-09-27 18:29:55
我有一个SDF数据库文件。我期待着用C#管理我的数据库。例如,我想删除一个表或更改一个表模式。
我怎样才能做到这一点?
我坚持使用实体框架和DbContext来实现这一点。
cmd.ExecuteNonQuery("DROP TABLE myTable;");
cmd.ExecuteNonQuery("ALTER TABLE MyTable ADD ...");
使用实体框架,您可以像这样使用上面的SQL语句:
context.Database.ExecuteSqlCommand("DROP TABLE myTable;");
您可以使用以下内容:
using System.Data.SqlServerCe;
using System.IO;
...
namespace SomeNamespace
{
public class SomeClass
{
public static void CreateDatabase(string connectionString)
{
using (var engine = new SqlCeEngine(connectionString))
{
if (IsDatabaseExists(connectionString))
File.Delete(GetPathToDatabase(connectionString));
engine.CreateDatabase();
using (var conn = new SqlCeConnection(connectionString))
{
conn.Open();
var cmd = new SqlCeCommand(@"CREATE TABLE [Users](
[ID] [int] IDENTITY(1,1) NOT NULL
[Username] [nvarchar](128) NOT NULL
CONSTRAINT [PK_Users] PRIMARY KEY NONCLUSTERED ([ID]))";
cmd.ExecuteNonQuery();
cmd.CommandText = @"CREATE TABLE [UserAnswers](
[ID] [int] IDENTITY(1,1) NOT NULL,
[UserID] [int] NOT NULL,
[Question] [nvarchar](256) NOT NULL,
[Answer] [nvarchar](256) NOT NULL,
CONSTRAINT [PK_UserAnswers] PRIMARY KEY NONCLUSTERED ([ID]))";
cmd.ExecuteNonQuery();
cmd.CommandText = @"ALTER TABLE [UserAnswers] ADD CONSTRAINT [FK_UserAnswers_Users] FOREIGN KEY([UserID])
REFERENCES [Users] ([ID])
ON DELETE CASCADE";
cmd.ExecuteNonQuery();
}
}
}
}
}
我想您想从Visual Studio中的数据库项目管理数据库,对吗?如果是这样,则必须将数据库项目添加到解决方案中。但我真的不知道你的版本是否支持。