使用 LINQ To SQL / SQL CE 创建表

Posted

技术标签:

【中文标题】使用 LINQ To SQL / SQL CE 创建表【英文标题】:Create Table with LINQ To SQL / SQL CE 【发布时间】:2011-01-26 16:29:45 【问题描述】:

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

首先我创建 DataContext 对象:

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

我尝试用这种方法创建数据库表:

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. 第二个问题是。

例如我有代表数据库表的类,这里是:

[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 表。可以用这个类创建数据库表(具有特定名称)吗?

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

3.

最后一个问题是:

场景是:

我有一个 SQL 压缩数据库文件,它包含一个表 User1 类型 Table<User>,我用 SqlMetal *dbml 文件生成。

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

关闭应用。

是否可以访问数据库表 User2 ... UserN?或者我必须创建另一个 dbml 文件?

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于使用 LINQ To SQL / SQL CE 创建表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Sql CE 4 数据库进行功能测试

SQL CE和orderby linq子句的问题

在 WP7 上使用 C# 格式化 LINQ SQL CE 数据

将 SQL Server CE 数据库 (.sdf) 从 3.5 更新到 4.0

SQL CE 上的 LINQ 聚合左连接

带有可选 Where 子句和 Sql Server CE 的 Linq