DbSet,DbContext,EntityFramework

时间:2014-02-21 10:09:38

标签: asp.net entity-framework

我是ASP.NET的新手,也是EF的新手。我正在尝试开发一个应用程序,在阅读了一些网站后,我已经决定要创建一个3层应用程序(DAL,BL,一个网站作为前端)。

对于DAL层,我从这里获取灵感 http://codefizzle.wordpress.com/2012/07/26/correct-use-of-repository-and-unit-of-work-patterns-in-asp-net-mvc/

public interface IGenericRepository<T> where T : class
{
    void Add(T a);
}

public interface IUnitOfWork:IDisposable
{
    IGenericRepository<UserInfo> UserInfoRepository { get; }
    void Commit();
}

public class EfGenericRepository<T> : IGenericRepository<T> where T : class
{
    private  DbSet<T> _dbSet;
    public EfGenericRepository(DbSet<T> dbSet)
    {
        _dbSet = dbSet;
    }

    public void Add(T a)
    {
       _dbSet.Add(a);          
    }   
}
public class EfUnitOfWork : DbContext, IUnitOfWork
{      
    private readonly EfGenericRepository<UserInfo> _userInfoRepo;
    public DbSet<UserInfo> UserInfos { get; set; }

    public EfUnitOfWork()
    {
        _userInfoRepo = new EfGenericRepository<UserInfo>(UserInfos);
    }


    public IGenericRepository<UserInfo> UserInfoRepository
    {
        get { return _userInfoRepo; }
    }
    public void Commit()
    {
        this.SaveChanges();
    }
}

我的BL看起来像这样:

public interface IBussinessLogic
{
   void AddUserInfo(string c);
}
public class BusinessLogic: IBussinessLogic
{
    private IUnitOfWork _unitOfWork;
    public BusinessLogic()
    {
        _unitOfWork = new EfUnitOfWork();
    }

    public void AddUserInfo(string c)
    {
        _unitOfWork.UserInfoRepository.Add(new UserInfo()
        {
            Address = c
        });
        _unitOfWork.Commit();
    }
}

现在我正在使用网络表单,但我不认为这应该是一个问题。 点击我执行:

IBussinessLogic businessLogic = new BusinessLogic();    
businessLogic.AddUserInfo(address.Text);

但没有任何反应,我的数据没有保存在数据库中。

有人可以帮助我吗?

0 个答案:

没有答案