マイApplictionDbContextClassは次のようになります -context.SaveChanges()データベース内のデータを更新しない
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
//private static ApplicationDbContext _context;
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public DbSet<Trip> Trips { get; set; }
public DbSet<Place> Places { get; set; }
public DbSet<UserTripDetail> UserTripDetails { get; set; }
public DbSet<TripPicture> TripPictures { get; set; }
}
私TripPictureControllerは、次のようになります - それはまたポストのアクションが含まれてい
//private readonly ApplicationDbContext _db = new ApplicationDbContext();
private readonly IUnitOfWork _unitOfWork;
private readonly ITripPictureRepository _tripPictureRepository;
public TripPicturesController(IUnitOfWork unitOfWork, ITripPictureRepository tripPictureRepository)
{
_unitOfWork = unitOfWork;
_tripPictureRepository = tripPictureRepository;
}
: -
[HttpPost]
public ActionResult Create(TripPicture model, HttpPostedFileBase ImageData)
{
if (ImageData != null)
{
model.TripId = 1;
model.Image = this.ConvertToBytes(ImageData);
}
_tripPictureRepository.Add(model);
_unitOfWork.Commit();
//_db.TripPictures.Add(model);
//_db.SaveChanges();
return View(model);
}
投稿リクエストにヒットしたとき、モデルはデータベースにプッシュされません。私はここで依存性注入を使用しています。私の推測は、別のコンテキストオブジェクトの作成がどこかにあります。
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
app.CreatePerOwinContext(**ApplicationDbContext.Create**);
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);}
私のUnitOfWorkクラスがある: - - :私は、起動クラスに次のコードを見
public class UnitOfWork : IUnitOfWork
{
private DbContext _context;
public UnitOfWork(DbContext dbContext)
{
_context = dbContext;
}
public void Commit()
{
_context.SaveChanges();
}
}
と私のリポジトリのクラスがある: -
public class Repository<T> : IRepository<T> where T : class
{
protected DbSet<T> _dbSet;
public Repository(DbContext context)
{
_dbSet = context.Set<T>();
}
public void Add(T entity)
{
_dbSet.Add(entity);
}
}
とき、私のオブジェクトが保存されていますunitOfWorkは使用しないでください。何が問題ですか!?
リポジトリ 'Add'方法およびUnitOfWorkの' Commit'方法 – demo
を提供してください、私は私の推測では、どこか違うの作成があるさ」 –
ivenたUnitOfWorkとリポジトリクラスメソッドを追加しましたコンテキストオブジェクト "私もそう思う。リポジトリーと作業ユニットの両方のコンストラクター内にブレークポイントを設定することで、簡単に確認できます。 '.GetHashCode()'を呼び出すことができます。結果が異なる場合、オブジェクト自体は異なります(私が知る限り、 'DbContext'は' GetHashCode'をオーバーライドしません)。 –