使用LINQ To SQL / SQL CE创建表

时间:2011-01-26 16:29:46

标签: sql linq-to-sql sql-server-ce

我是SQL的新手,我尝试使用LINQ To SQL创建一个表。

首先我创建DataContext对象:

        const string connStr = @"Spiri_SQL_CE_DB.sdf";
        _dc = new Spiri_SQL_CE_DB(connStr);

我尝试用这种方法创建DB表:

public void CreateUserTab(string nick)
{        
    string sqlCdm = string.Format(CultureInfo.InvariantCulture, "CREATE TABLE {0} (Nick nvarchar(30) PRIMARY KEY, AzetID nvarchar(30), RpText nvarchar(300), Your bit, Sing nvarchar(30), Time DateTime, OriginalTxt nvarchar(300))",nick);

    _dc.ExecuteCommand(sqlCdm);

    _dc.SubmitChanges();
}

1

第一个问题是我使用这个方法,创建表并关闭应用程序。但新创建的表不在数据库中。

我认为我在数据库上所做的更改不会保存数据库。如果我检查服务器资源管理器中的db文件,我没有看到新的db表。

2 第二个问题是。

例如,我有代表DB表的类,这里是:

[Table]
public class User
{
    [Column(IsPrimaryKey = true)]
    public string Nick { get; set; }

    [Column]
    public string AzetId { get; set; }

    [Column]
    public String RpText { get; set; }

    [Column]
    public bool Your { get; set; }

    [Column]
    public string Sing { get; set; }

    [Column]
    public DateTime Time { get; set; }

    [Column]
    public string OriginalTxt { get; set; }
}

我知道可以在CLR类Tabel上映射SQL表。可以使用此类创建DB表(具有特定名称)吗?

我想在我的代码中省略SQL命令,是否可以从CLR对象创建db表?

第3

最后一个问题是:

情景是:

我有SQL compact DB文件,它包含一个表User1类型Table<User>,我使用SqlMetal * dbml文件生成。

然后我从代码创建另一个表User2,User3 ... UserN。

关闭应用

可以访问db表User2 ... UserN?或者我必须创建另一个dbml文件?

1 个答案:

答案 0 :(得分:0)

1:在连接字符串中使用sdf文件的完整路径,以避免混淆文件的位置。

2:是的,你可以调用_dc.CreateDatabase,然后创建你的表。 (该类必须作为Table对象包含在DataContext中

3:为什么不在.cs文件中创建所需的代码呢?