使用 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 创建表的主要内容,如果未能解决你的问题,请参考以下文章
在 WP7 上使用 C# 格式化 LINQ SQL CE 数据