周一正式开始了毕业工作。然后学习调试了近4天,刚刚总算在同事的帮助下做出了一个基于Asp.Net MVC4的Hello World显示。

这是一篇最为基础的记录教程,记录内容可能有点混乱,旨在能在刚调试完成,趁着印象深刻急速记录,晚些会重新做一遍这个项目写一个更为详细的博文。

下面是正文:

整个网站项目由若干个功能子项目组成。而我要做的是自己做一个口香糖demo混在原项目中。所以基础的配置我就先不说了。首先复制别的子项目一份并且重命名为Aibol.Sugar,并且导入visual studio。导入后的项目如下图所示。

Asp.Net MVC4的学习概况

然后把多余的文件删除,然后写相应的代码。最后截图如下。

Asp.Net MVC4的学习概况

好了,上面就是完成效果,教程结束。

 

 

 

 

 

 

开个玩笑。

下面是核心步骤:

1.创建数据库jiedian.Aibol.Sugar。

Asp.Net MVC4的学习概况

注意,ID一定要是uniqueidentifier类型!敲黑板!因为后面是要继承父类进行操作,所以就限定死了ID必须是该类型。

另外一定要有一个Status状态,这个我忘记为什么了,但是一定要加(也有可能是我记错了,我会在下个教程中说明的,应该)

 

2.在项目的Repositories文件夹中创建SqlServer文件夹和一个ISugarRepository接口。然后在SqlServer中创建SugarRepository和数据库访问模板Sugar.dbml。如下图所示。

Asp.Net MVC4的学习概况

为什么是这种格式呢?扔粉笔!很重要啊!如果后期需要实现mysql数据库,那么只要在Repositories文件夹中再创建一个“mysql”文件夹,接口都共用ISugarRepository接口。也就是说用同一套接口实现不同的数据库。

 

3.Sugar.dbml是这样创建的:新建一个“LINQ to SQL Classes”,即可创建一个空dbml文件。在这里重命名为Sugar.dbml。然后在SQL Server Object Explorer窗口中,把jiedian.Aibol.Sugar数据库直接拖到这个空dbml文件中,就可以成功创建一个非空的dbml文件。

Asp.Net MVC4的学习概况

题外话:这个东西到底有什么用我也不是很清楚,反正这么用就对了。表示从Java的SSM框架转到Asp.Net MVC4还是有点水土不服的。

 

4.然后ISugarRepository.cs的内容改成这样:

namespace Aibol.Modules.Sugars.Repositories
{
    public interface ISugarRepository : IRepositoryBase<Sugars.Models.Sugar>
    {
    }
}

我也不知道为什么,照着写就对了。

 

5.相对应的SugarRepository.cs改成这样:

namespace Aibol.Modules.Sugars.Repositories.SqlServer
{
    public class SugarRepository : ISugarRepository
    {
        private readonly SugarDataContext _context;

        public SugarRepository(SugarDataContext context)
        {
            _context = context;
        }

        public int Delete(SearchCriteria searchCriteria)
        {
            throw new NotImplementedException();
        }

        public IQueryable<Models.Sugar> GetCollection(SearchCriteria searchCriteria)
        {
            var sugarFilter = FilterSugar(searchCriteria);
            
            return _context
                .jiedian_Aibol_Sugars
                .Where(sugarFilter)
                .OrderByDescending(r => r.CreatedWhen)
                .Select(t => t.MapToEntity<Models.Sugar>());
        }
        private Expression<Func<jiedian_Aibol_Sugar, bool>> FilterSugar(SearchCriteria sc)
        {
            var predicate = PredicateBuilder.True<jiedian_Aibol_Sugar>();

            if (sc.ContainsKey("name"))
            {
                predicate = predicate.And(t => t.Name.IndexOf(sc["name"], StringComparison.Ordinal) > -1);
            }

            if (sc.ContainsKey("term"))
            {
                var term = sc["term"].Trim();
                predicate = predicate.And(p => p.Name.IndexOf(term) > -1 );
            }
            

            return predicate;
        }

        //获取实例
        public Models.Sugar GetInstance(Guid id)
        {
            return _context
                .jiedian_Aibol_Sugars
                .Where(t => t.ID == id)
                .Select(t => t.MapToEntity<Models.Sugar>())
                .FirstOrDefault();
        }

        //保存
        public Models.Sugar Save(Models.Sugar item)
        {
            jiedian_Aibol_Sugar aibolSugar = null;
            if(item.ID!=Guid.Empty)
            {
                aibolSugar = _context.jiedian_Aibol_Sugars.FirstOrDefault(t => t.ID == item.ID);
            }
            if (aibolSugar == null)
            {
                item.ID = Guid.NewGuid();
                aibolSugar = new jiedian_Aibol_Sugar();
                _context.jiedian_Aibol_Sugars.InsertOnSubmit(aibolSugar);
            }
            item.MergeToDbModel(aibolSugar);
            _context.SubmitChanges();
            return item;
        }

        //修改
        public int UpdateStatus(SearchCriteria searchCriteria)
        {
            var ids = searchCriteria["ids"].Split(',').Select(Guid.Parse);
            var list = _context.jiedian_Aibol_Sugars.Where(t => ids.Contains(t.ID)).ToList();
            var count = 0;
            foreach (var item in list)
            {
                switch (searchCriteria.Status)
                {
                    case 4:
                        count++;
                        break;
                    case 8:
                        count++;
                        break;
                }
            }
            _context.SubmitChanges();
            return count;
        }


    }
}
View Code

相关文章: