استاد مدائنی عزیز، سلام؛
من در یک پروژه برای بانک اطلاعاتی، یک دیتابیس ساختم و دیتچ کردم و در روت پروژه قرار دادم.
بعد با Entity به پروژه اضافه کردم.
از GenericRepository که شما آموزش داده بودید استفاده کردم تا مقادیر رو به این دیتابیس اضافه کنم.
مشکل اینجاست که مقادیر تا زمانی که برنامه باز هست، در جدول وجود دارن!! و پس از بستن برنامه جداول کاملا پاک میشه.
میشه مثل همیشه لطف بفرمایید و راهنمایی کنید.
سپاس فراوان
سلام
SaveChanges کردید ؟
استاد شرمنده! اشتباهی دستم به «جواب درست» خورد!!!
بله استاد! Save Change رو هم انجام دادم!
نمونه کد رو قرار بدید
جنریک ریپوزیتوری:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Linq.Expressions;
using WpfAmvaj.Models;
namespace WpfAmvaj.Repositories
{
public class LoginGenericRepository<TEntity> where TEntity : class
{
private LoginCredentialsEntities _db;
private DbSet<TEntity> _dbSet;
public LoginGenericRepository(LoginCredentialsEntities db)
{
_db = db;
_dbSet = _db.Set<TEntity>();
}
public virtual IEnumerable<TEntity> GetAll(Expression<Func<TEntity, bool>> where = null)
{
IQueryable<TEntity> query = _dbSet;
if (where != null)
{
query = query.Where(where);
}
return query.ToList();
}
public virtual TEntity GetById(object iD)
{
return _dbSet.Find(iD);
}
public virtual void Insert(TEntity entity)
{
_dbSet.Add(entity);
}
public virtual void Delete(TEntity entity)
{
if (_db.Entry(entity).State == EntityState.Detached)
{
_dbSet.Attach(entity);
}
_dbSet.Remove(entity);
}
public virtual void Delete(object iD)
{
var entity = GetById(iD);
Delete(entity);
}
public virtual void Update(TEntity entity)
{
if (_db.Entry(entity).State == EntityState.Detached)
{
_dbSet.Attach(entity);
}
_db.Entry(entity).State = EntityState.Modified;
}
}
}
کانتکست:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WpfAmvaj.Models;
using WpfAmvaj.Repositories;
namespace WpfAmvaj.Context
{
public class Credentials : IDisposable
{
LoginCredentialsEntities db = new LoginCredentialsEntities();
private LoginGenericRepository<LoginCredential> _loginCredentialRepository;
public LoginGenericRepository<LoginCredential> LoginCredentialRepository
{
get
{
if (_loginCredentialRepository == null)
{
_loginCredentialRepository = new LoginGenericRepository<LoginCredential>(db);
}
return _loginCredentialRepository;
}
}
public void Save()
{
db.SaveChanges();
}
public void Dispose()
{
db.Dispose();
}
}
}
رویداد دکمه:
private void btnLogin_Click(object sender, RoutedEventArgs e)
{
string userName;
if (txtUserName.Visibility == Visibility.Visible)
{
userName = txtUserName.Text;
}
else
{
userName = cmbUserName.SelectedValue.ToString();
}
if (chbSaveUserName.IsChecked == true)
{
using (Credentials cr = new Credentials())
{
LoginCredential ceredential = new LoginCredential() { UserName = userName };
cr.LoginCredentialRepository.Insert(ceredential);
cr.Save();
}
}
کد درسته
دیباگ کنید
برای این کار،
یک پنجره ی جدید ایجاد کردم با یک TextBox یک دکمه و یک گرید برای نمایش اطلاعات جدول
در رویداد دکمه کد های زیر رو زدم:
private void btnInsert_Click(object sender, RoutedEventArgs e)
{
using (Credentials cr=new Credentials())
{
LoginCredential login = new LoginCredential() { UserName = txtUserName.Text };
cr.LoginCredentialRepository.Insert(login);
cr.Save();
dgUsers.ItemsSource = cr.LoginCredentialRepository.GetAll();
}
}اطلاعات به درستی ذخیره و در گرید نمایش داده میشه. یعنی در دیتا بیس ذخیره میشه و بعد در گرید نمایش داده میشه.
احتمال میدید دیتابیسی که دیتچ شده اشکالی داشته باشه! آیا روش خاصی برای دیتچ کردن وجود داره؟
ممکنه بانک متفاوت شده باشه
بانک اجرا با بانک اصضلی تفاوت داشته باشه
بررسی کنید
استاد مدائنی عزیز،
از بردباری شما بسیار سپاسگزارم.
من یک پروژه ی جدید با یک بانک جدید ساختم، اما نتیجه همان شده!
اگر لطف بفرمایید و پروژه رو بازبینی کنید ممنونم میشم.
لینک پروژه:
http://s7.picofile.com/file/8387706376/WpfLogin.rar.html
سپاس فراوان
من زمانم بسیار محدود
وقت کنم بررسی میکنم
با گوشی جواب سوال میدم
از اینکه زمان می گذارید و پاسخ میدید واقعا سپاسگزارم،
زمان شما بسیار ارزشمند هست و من به این امر واقف هستم.
برای قرار دادن این قسمت در پروژه ی خودم عجله ای ندارم.
هر زمان صلاح دیدید بررسی کنید.
باز هم از اینکه زمان ارزشمند خودتون رو برای پاسخ گویی می گذارید از صمیم قلب سپاسگزارم.
استاد مدائنی عزیز، سلام؛
امیدوارم این پست رو بخونید.
می خواستم بدونه که آیا فرصت داشتید این پروژه رو بررسی کنید؟
سپاس فراوان
خیر متاسفانه هنوز زمان خالی گیرم نیومده
استاد مدائنی عزیز، سلام؛
امیدوارم در شرایط موجود و بیماری کرونا، سلامت باشید.
خواستم یادآوری کنم، در صورتی که فرصت دارید، این مشکل رو بررسی کنید.
سپاسگزارم