私はいくつかのことを試みましたが、いくつかの異なるエラーが発生しています。私はEntity Frameworkを使用しようとしており、コード初の開発を行っています。現在エラーが発生していますエンティティフレームワークで挿入できません
ストアの更新、挿入、削除のステートメントが予期しない行数(0)に影響しました。エンティティはロードされた後に変更または削除された可能性があります。
私は自分のマシンでこれをローカルに実行しているので、これは不可能です。私はそれが私のPKと関係があると思いますが、わかりません。
私はいくつかのことを試しましたが、運はありません。ここで
は私のコードです:
User.cs
- これは、その後
public class User
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
public string AspNetUserId { get; set; }
}
私のモデルであり、私のコントローラで、私は、新しいユーザーを挿入しようとしています:ここで
Model.Models.User.User usr = new Model.Models.User.User()
{
AspNetUserId = user.Id.ToString()
};
userService.CreateUser(usr);
userService.SaveUser();
は私ですUserService.cs
:
public class UserService : IUserService
{
private readonly IUserRepository usersRepository;
private readonly IUnitOfWork unitOfWork;
public UserService(IUserRepository usersRepository, IUnitOfWork unitOfWork)
{
this.usersRepository = usersRepository;
this.unitOfWork = unitOfWork;
}
public IEnumerable<User> GetUsers()
{
var users = usersRepository.GetAll();
return users;
}
public User GetUser(int id)
{
var user = usersRepository.GetById(id);
return user;
}
public User Get(string aspNetUserId)
{
Expression<Func<User, bool>> exp = c => c.AspNetUserId == aspNetUserId;
var user = usersRepository.Get(exp);
return user;
}
public void CreateUser(User user)
{
usersRepository.Add(user);
}
public void SaveUser()
{
unitOfWork.Commit();
}
}
私はフィールドから[Key]
を取り除いてに変更するなど、いくつかの試みを試みました。まだ何もありません。
データベースが正しく設定されており、Users
テーブルのID
列が主キーと自動インクリメントIDです。 SSMSに行を挿入するだけで動作します。
アイデア?より多くのコードを表示する必要がある場合はお知らせください。
---- EDIT
public class UnitOfWork : IUnitOfWork
{
private readonly IDbFactory dbFactory;
private CollegeBaseballManagerEntities dbContext;
public UnitOfWork(IDbFactory dbFactory)
{
this.dbFactory = dbFactory;
}
public CollegeBaseballManagerEntities DbContext
{
get
{
if (dbContext == null)
return dbContext = dbFactory.Init();
else
return dbContext;
}
}
public void Commit()
{
DbContext.Commit();
}
}
public class CollegeBaseballManagerEntities : DbContext
{
public CollegeBaseballManagerEntities() : base("CollegeBaseballManagerEntities") { }
public DbSet<League> Leagues { get; set; }
public DbSet<User> Users { get; set; }
public virtual void Commit()
{
base.SaveChanges();
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<CollegeBaseballManagerEntities>(null);
modelBuilder.Configurations.Add(new LeagueConfiguration());
modelBuilder.Configurations.Add(new UserConfigurations());
}
}
- SECONDのEDIT
はそれを手に入れました!私はそれを変更し、それが働いた
public virtual void Add(T entity)
{
dbSet.Attach(entity);
dataContext.Entry(entity).State = EntityState.Modified;
}
:私のUserRepository.Add()
は次のようになります。
public virtual void Add(T entity)
{
dbSet.Attach(entity);
dataContext.Entry(entity).State = EntityState.Added;
}
複数のクラスを追加しました。 – halterdev
'UserRepository.Add()'の定義は何ですか? – devuxer
ありがとう...あなたは私を私の答えに導いた。 – halterdev