我是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文件?
答案 0 :(得分:0)
1:在连接字符串中使用sdf文件的完整路径,以避免混淆文件的位置。
2:是的,你可以调用_dc.CreateDatabase,然后创建你的表。 (该类必须作为Table对象包含在DataContext中
3:为什么不在.cs文件中创建所需的代码呢?