微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 使用AutoIncrement插入

我正在尝试将一些数据插入到我的sqlite数据库中,当我使用一条记录执行此操作时,该数据库非常有效.但在循环中我得到一个错误.首先,这是代码

string dataSource = "Data Source=";
Connection = new sqliteConnection(dataSource + this.DatabasePath);

var context = new DataContext(Connection);

var users = context.GetTable<User>();


for (int i = 0; i < 2; i++) {
    User tempuser = new User() {
        ID = null,EMail = i + "@" + i + ".de",Password = "Test1234",JoinedDate = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss")
    };

    users.InsertOnSubmit(tempuser);
    context.SubmitChanges();
}

用户本身

[Table(Name = "User")]
public class User {

    [Column(Name = "UserID",IsPrimaryKey = true,CanBeNull = false)]
    public int? ID { get; set; }

    [Column(Name = "EMail",CanBeNull = false)]
    public string EMail { get; set; }

    [Column(Name = "Password",CanBeNull = false)]
    public string Password { get; set; }

    [Column(Name = "JoinedDate",CanBeNull = false)]
    public String JoinedDate { get; set; }

    [Column(Name = "PaymentMethodID")]
    public int PaymentMethodID { get; set; }
}

表是这样创建的

CREATE TABLE "User" (
`UserID`    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,`EMail` TEXT NOT NULL,`Password`  TEXT NOT NULL,`JoinedDate`    TEXT NOT NULL,`Licenses`  INTEGER,`PaymentMethodID`   INTEGER
)

最后我得到错误

An exception of type ‘System.Data.Linq.DuplicateKeyException’ occurred in System.Data.Linq.dll but was not handled in user code

Additional @R_314_4045@ion: Eine Entität,deren Schlüssel bereits verwendet wird,kann nicht hinzugefügt werden.

我敢打赌,这是因为Field ID,它被设置为AutoIncrement.

解决方法

你只需删除ID = null,因为这是自动增量而不需要写这个.
更改表“User”删除NOT NULL检查自动增加列ID,并在类“User”中删除. ID列是自动递增,然后不需要使用NOT NULL约束进行检查.

for (int i = 0; i < 2; i++) {
    User tempuser = new User() {
        EMail = i + "@" + i + ".de",JoinedDate = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss")
    };

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐