如何正确地将我的MVC控制器架构到存储库场景

时间:2013-04-27 15:52:21

标签: asp.net-mvc repository

我是MVC的新手,也是项目架构的新手。我有一个带控制器的项目,这些通过接口转到服务,然后通过接口转到存储库(然后我使用EF和SQL)。

这是我的情景。

我的控制器post action有一个Ienumerable语句对象集合。 (我正在导入语句数据行,然后将它们保存在列表中)。

我通过我的服务层调用存储库中的公共bool将该集合保存到我的语句表中:

public bool AddTransactions(Data.statement stat)
{
    try
    {
        _entities.statements.Add(stat);

        _entities.SaveChanges();
    }
    catch(Exception e)
    {
        string exception =
        e.InnerException.ToString();
        return false;
    }
    return true;
}

我只是通过在控制器中循环EACH语句行并在每一行上调用我的bool来实现这一点..这实在是效率低下。

这是控制器代码......

     var saveTrans = new Data.statement();
        foreach (var transaction in importedData)
        {
            saveTrans.Description = transaction.Description;
            saveTrans.Value = transaction.Value;
            saveTrans.Balance = transaction.Balance;
            saveTrans.Type = transaction.Type;
            _statement.AddTransactions(saveTrans);
        }

我想一次性完成这一切。我想直接将我的整个集合(importedData)传递给存储库,并通过一次数据库调用保存它。不幸的是我不得不转换数据所以我不能直接导入语句类,我必须从importedData数据集构建语句对象。

我确信这是显而易见的,但我今天无法想象。我责怪天气。

总之,我需要从foreach循环中取出_statement.AddTransactions&使用来自importedData的数据构建一个data.statement集合,然后将其粉碎六个到我的存储库以保存回我的数据库: - )

...分辨率

我这样做了:

    var targetList = productsByName
        .Select(x => new Data.statement()
            {
                Description = x.Description,
                Date = x.Date,
                Balance = x.Balance,
                Value = x.Value,
                Type = x.Type
            }).ToList();

然后使用:

通过我的图层
bool AddNewTransactions(List<statement> stat)

0 个答案:

没有答案