【发布时间】:2011-08-22 15:16:12
【问题描述】:
我有以下实体
[Table(Name = "Users")]
public sealed class UserDB
{
private Int64 _id = -1;
private string _username = string.Empty;
public UserDB() { }
public UserDB(RepositoryInfo repoInfo)
{
UserName = repoInfo.Account;
}
[Column(Name = "ID", Storage = "_id", IsDbGenerated = true, IsPrimaryKey = true, UpdateCheck = UpdateCheck.Never)]
public Int64 ID { get { return _id; } set { _id = value; } }
[Column(Name = "UserName", DbType="nvarchar(50)", Storage = "_username")]
public string UserName { get { return _username; } set { _username = value; } }
}
ID 映射到 Autoincrement INTEGER 类型 列(实际上是 SQLite 中唯一可能具有自动增量的类型)
当我尝试像这样向数据库添加新用户时,出现错误:
public static Int64 AddUser(DataContext context, RepositoryInfo repoInfo)
{
UserDB udb = new UserDB(repoInfo);
//an ID of udb is -1, but I tried different values too, doesn't change result
var userstable = context.GetTable<UserDB>();
userstable.InsertOnSubmit( udb );
context.SubmitChanges(); // here I get a error, see on screen shot
return udb.ID;
}
编辑
经过谷歌搜索和检查,似乎 SQLite 根本不提供任何 SCOPE_IDENTITY() 函数。但是 Linq To SQL 注入了它!
我该如何更改?
【问题讨论】: