Tôi đã folowing thực thểĐối phó với bản đồ cột SQLite autoincrement trong LINQtoSQL
[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 được ánh xạ tới autoincrement INTEGER loại cột (trên thực tế loại duy nhất có thể với autoincrement trong SQLite)
Khi Tôi cố gắng thêm người dùng mới vào DB như thế này, tôi gặp lỗi:
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;
}
EDIT Sau một googling cho và kiểm tra, dường như SQLite đơn giản là không cung cấp bất kỳ chức năng SCOPE_IDENTITY()
. Nhưng Linq để SQL tiêm nó!
Tôi làm cách nào để thay đổi điều này?