gpt4 book ai didi

c# - Entity Framework 自动生成主键

转载 作者:太空狗 更新时间:2023-10-29 21:21:24 27 4
gpt4 key购买 nike

我是 Entity Framework 的新手。我有一个简单的类:

 public class User
{
[System.ComponentModel.DataAnnotations.Schema.DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string Email { get; set; }
public string UserName { get; set; }
public string Password { get; set; }

//public UserList Users { get; set; }

public User() { }
public User(int userId, string email, string username)
{
UserId = userId;
Email = email;
UserName = username;
}
}

还有我的 Initializer 类:

public class UserDataInitializer : DropCreateDatabaseAlways<UserDataContext>
{
protected override void Seed(UserDataContext context)
{
var Users = new List<User> {

new User() {UserId=1, Email="a1@gmail.com", UserName="a1", Password="123456"},
new User() {UserId=2, Email="a2@gmail.com", UserName="a2", Password="123456"},
new User() {UserId=3, Email="a3@gmail.com", UserName="a3", Password="123456"},
new User() {UserId=4, Email="a4@gmail.com", UserName="a4", Password="123456"}}


Users.ForEach(i => context.Users.Add(i));
context.SaveChanges();


}
}

假设,我想添加 UserId=100 的新用户。它会自动将 UserId 更改为 5。

如何禁用对 EF 的这种修改? 'UserId' 必须是主键并且它的类型是 int。

最佳答案

您必须将 User 类中的属性更改为:

数据注释:

 [System.ComponentModel.DataAnnotations.Schema.DatabaseGenerat‌ed(System.ComponentM‌​odel.DataAnnotations‌​.Schema.DatabaseGeneratedOp‌​tion.None)]
public int UserId { get; set; }

或 Fluent API:

modelBuilder.Entity<User>().Property(m => m.UserId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

关于c# - Entity Framework 自动生成主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41278167/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com