如何以编程方式对SQL SE数据库编写DDL?

时间:2013-09-03 07:20:53

标签: c# sql-server-ce

我有一个SDF数据库文件。我期待用C#管理我的数据库。例如,我想删除一个表或更改表模式。

我怎样才能做到这一点?

我坚持使用Entity Framework和DbContext实现这一目标。

3 个答案:

答案 0 :(得分:1)

cmd是一个SqlCeCommand对象(或IDbCommand对象)

cmd.ExecuteNonQuery("DROP TABLE myTable;");

cmd.ExecuteNonQuery("ALTER TABLE MyTable ADD ...");

使用Entity Framework,您可以使用上述SQL语句:

context.Database.ExecuteSqlCommand("DROP TABLE myTable;");

答案 1 :(得分:1)

您可以使用以下内容:

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();
                }
            }
        }
    }
}

答案 2 :(得分:0)

我认为你想从Visual Studio中的数据库项目管理你的数据库,对吗? 如果是这样,您必须向解决方案添加数据库项目。但我真的不知道你的版本是否受支持。